python - 我在 python 中使用 beautifulSoup 将一页转到另一页时遇到问题?
问题描述
在抓取数据时将一页转到另一页时遇到错误。代码执行没有错误,但访问的 url 应该从 1 更新到 max_pages 但不是这样的 url:
https://www.yelp.com/user_details_reviews_self?userid=_NpJZ0q8KVI-d2YLL_VpCA&rec_pagestart=00
from urllib.request import urlopen as uReq
from bs4 import BeautifulSoup as soup
url = input("Enter the URL : ")
max_pages = int(input("Enter the Maximum Number of Pages you want to Extract : "))
for i in range(1, max_pages+1):
my_url = url[::-1].replace('1',str(i) ,1)[::-1]
uClient = uReq(my_url)
page_html = uClient.read()
page_soup = soup(page_html, "html.parser")
解决方案
错误在这里:
my_url = url[::-1].replace('1',str(i) ,1)[::-1]
您尝试替换1
为,str(i)
但1
url 内没有,https://www.yelp.com/user_details_reviews_self?userid=_NpJZ0q8KVI-d2YLL_VpCA&rec_pagestart=00
因此无法更新。
无论如何,我在这里看不到您的问题的任何好的解决方案。如果你让用户给你他想要的任何地址,你可以有一些这样的网址:
https://www.url1.com?n=1&p=1
p
页码在哪里,其他类似的
https://www.url11.com?p=1&n=1
https://www.url111.com?n=1&p=1
这次n
是页码。
祝您找到一种自动更改所有这些 url 的页码的方法。
如果你的解析器是为 yelp 编码的,我会做这样的事情:
from urllib.request import urlopen as uReq
from bs4 import BeautifulSoup as soup
user_id = input("Enter the YELP user id : ")
max_pages = int(input("Enter the Maximum Number of Pages you want to Extract : "))
url_base = "https://www.yelp.com/user_details_reviews_self?userid={}".format(user_id)
for i in range(0, max_pages):
page = "&rec_pagestart{:02d}".format(i*10)
url = url_base + page
print(url)
#do parsing stuff
它解析 10 个不同的页面:
Enter the YELP user id : _NpJZ0q8KVI-d2YLL_VpCA
Enter the Maximum Number of Pages you want to Extract : 10
https://www.yelp.com/user_details_reviews_self?userid=_NpJZ0q8KVI-d2YLL_VpCA&rec_pagestart00
https://www.yelp.com/user_details_reviews_self?userid=_NpJZ0q8KVI-d2YLL_VpCA&rec_pagestart10
https://www.yelp.com/user_details_reviews_self?userid=_NpJZ0q8KVI-d2YLL_VpCA&rec_pagestart20
https://www.yelp.com/user_details_reviews_self?userid=_NpJZ0q8KVI-d2YLL_VpCA&rec_pagestart30
https://www.yelp.com/user_details_reviews_self?userid=_NpJZ0q8KVI-d2YLL_VpCA&rec_pagestart40
https://www.yelp.com/user_details_reviews_self?userid=_NpJZ0q8KVI-d2YLL_VpCA&rec_pagestart50
https://www.yelp.com/user_details_reviews_self?userid=_NpJZ0q8KVI-d2YLL_VpCA&rec_pagestart60
https://www.yelp.com/user_details_reviews_self?userid=_NpJZ0q8KVI-d2YLL_VpCA&rec_pagestart70
https://www.yelp.com/user_details_reviews_self?userid=_NpJZ0q8KVI-d2YLL_VpCA&rec_pagestart80
https://www.yelp.com/user_details_reviews_self?userid=_NpJZ0q8KVI-d2YLL_VpCA&rec_pagestart90
推荐阅读
- javascript - 选择中的选项 - 方法调用
- angular - 找不到命名空间“Microsoft”
- javascript - 如何从 node/express 中的后端(端口:3001)路由重定向到前端(端口:3000)?
- c# - 在 LINQ lambda 中解包元组
- c++ - c ++检查字符串是否是有效的正则表达式字符串,无异常
- https - 通过 https 的 Socket.io 服务器
- flutter - 如何在本地保存 Flutter 中的状态
- python - 使用 pyenv 和 anaconda 环境时遇到问题
- javascript - 尝试使用简单的显示/隐藏滑块来显示单独的 div,无法将其映射到 slider.value 到数组
- php - 将多个图像路径插入多列