[英]Selenium/BeautifulSoup - Python - Loop Through Multiple Pages
[英]Python - Iterate through pages with BeautifulSoup
我使用 BeautifulSoup4 从几个网页中抓取数据。 比如下面这个例子,url是https://wadsfred.aliexpress.com/store/425826/search/1.html ,有96页。 我的问题是脚本在几页后抛出一个错误。 通常,当代码到达第 15-20 页时。 错误信息:
回溯(最近一次调用):文件“main.py”,第 34 行,在 if next_page.text != 'Next': AttributeError: 'NoneType' object has no attribute 'text'
我在这里先向您的帮助表示感谢!
import requests
import os
import csv
from itertools import count
from bs4 import BeautifulSoup
os.chdir('C:\MyFolder')
page_nr = 1
price = []
min_order = []
prod_name = []
for page_number in count(start = 1):
url =
'https://wadsfred.aliexpress.com/store/425826/search/{}'.format(page_nr) +
'.html'
print(url)
response = requests.get(url)
soup = BeautifulSoup(response.content, 'html.parser')
for div_b in soup.find_all('div', {'class':'cost'}):
price.append(div_b.text)
for min_or in soup.find_all('span', {'class':'min-order'}):
min_order.append(min_or.text)
for pr_name in soup.find_all('div', {'class':'detail'}):
for pr_h in pr_name.find_all('h3'):
for pr_title in pr_h.find_all('a'):
prod_name_s = (pr_title.get('title').strip())
prod_name.append(prod_name_s[:120])
print(len(prod_name))
page_nr = page_nr + 1
next_page = soup.find('a', {'class':'ui-pagination-next'})
if next_page.text != 'Next':
break
它重定向到登录页面,将用户代理添加到您的请求中
heads = {"User-Agent" : 'Mozilla/5.0......'}
for page_number in count(start = 1):
.....
response = requests.get(url, headers=heads)
甚至更好地使用requests.session()
来创建持久会话(cookies)
某些页面中可能不存在具有“ui-pagination-next”类的“a”标签。 当您已经知道总共有 96 页时,您可以跳过该检查。 并将抓取块放在 try catch 中以跳过某些页面中的错误。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.