python - 如何使用python请求在网页中搜索多个字符串匹配
问题描述
我想通过在网页中传递多个字符串来搜索(“英文字幕”、“1080”、“2021”)来改进下面的代码段。目前,它适用于单字符串搜索。
import requests
url = 'http://www.allyoulike.com/'
r = requests.get(url)
singlesearchstring = "2021"
multiplesearchstring = "English Subtitles", "4080", "2021"
if (stringtosearch) in r.text:
print ('Found ',singlesearchstring )
else:
print ('Not Found ', singlesearchstring)
想要的输出:
Search Results:
English Subtitles - Found
4080 - Not Found
2021 - Found
解决方案
你可以做:
[(q, 'Found' if q.lower() in r.text.lower() else 'Not Found') for q in queries]
import requests
queries = ["English Subtitles", "4080", "2021"]
def main(url):
r = requests.get(url)
for q in queries:
q = q.lower()
if q in r.text.lower():
print(q, 'Found')
else:
print(q, 'Not Found')
main('http://www.allyoulike.com/')
更新答案:
import requests
from bs4 import BeautifulSoup
import re
from pprint import pp
queries = ["English Subtitles", "4080", "2021"]
def get_line(q, soup):
return [x for x in soup.findAll(text=re.compile('{!s}'.format(q)))]
def main(url):
r = requests.get(url)
soup = BeautifulSoup(r.text, 'lxml')
goal = [(q, 'Found', get_line(q, soup)) if q.lower()
in r.text.lower() else (q, 'Not Found') for q in queries]
pp(goal)
main('http://www.allyoulike.com/')
推荐阅读
- c# - 标签不会更新文本 = “”
- sas - 根据日期时间变量创建周变量
- file - 批处理文件运行两次
- django - 如何使用 django prefetch_related 在 mptt 树上预取孩子的父母?
- html - 将父母紧紧地包裹在孩子周围,以至于没有引入新的包裹
- c++ - 键盘输入不适用于 WebAssembly 和 Emscripten
- java - 内部存储路径
- c# - ASP 的 Request.IsLocal 在 Azure 中始终为真
- python - 带有 RandomizedSearchCV 的 Sklearn OneClassSVM:“ValueError:‘f’不在列表中”
- c# - 什么时候做注入依赖集成事件,控制器不调用c#