python - Python bs4:如果满足特定条件,如何使用不同的抓取页面重复“For”循环?
问题描述
我正在尝试创建一个for
循环,一旦它到达search_result
抓取页面中的最后一个属性,它将重复循环,但使用新抓取网页的数据。
循环到达最后一个属性后for
,它将在网页上查找链接,并使用新抓取的网页重复循环。
我已经编写了下面的代码,但循环不会重复它从原始网页的链接获得的新抓取页面。
import requests
from bs4 import BeautifulSoup
page = requests.get(URL, headers=headers)
soup = BeautifulSoup(page, 'lxml')
for search_result in soup.find_all(attrs={"search-result-index":True}):
print(search_result.name.text)
# if last search result, get link to new web page and repeat loop for the new web page.
if search_result == soup.find_all(attrs={"search-result-index":True})[-1]:
page = requests.get(soup.select_one('li.a-last [href]')['href'], headers=headers)
soup = BeautifulSoup(page, 'lxml')
你有什么想法吗?
解决方案
像这样的东西??
import requests
from bs4 import BeautifulSoup
headers = {'User-Agent':' Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/76.0.3809.100 Safari/537.36'}
def func_go(URL):
page = requests.get(URL, headers=headers)
soup = BeautifulSoup(page, 'lxml')
for search_result in soup.find_all(attrs={"search-result-index":True}):
print(search_result.name.text)
if search_result == soup.find_all(attrs={"search-result-index":True})[-1]:
URL = soup.select_one('li.a-last [href]')['href']
func_go(URL)
func_go('www.example.com')
推荐阅读
- git - 从备份文件恢复 GitLab 存储库
- julia - 使用绘图在单独的窗口中显示两个绘图
- .net-core - Log4net 无法与 netcore 编写的 Windows 服务一起使用
- c# - 相对于线的长度向 LineRenderer 添加力?
- javascript - 使用 React Js 中的 API 实时同步按钮状态
- reverse-proxy - traefik 运行但不使用 toml 文件
- regex - 在 .htaccess 文件中使用 HTTP_HOST
- express - STRIPE“不能代表 Standard 和 Express 关联账户接受服务条款”
- sql - 在 PostgreSQL 查询的输出中获取重复值
- linux - 查找所有带有“异常”消息的 jvm 日志文件并列出 uniq 异常的计数