python - 如何使用 Python 抓取多个评论页面?
问题描述
我有一个关于网络爬虫的问题。我想使用 Python 获得几个评论页面。
这是我的网络爬虫代码。
URL = 'https://www.example.co.kr/users/sign_in'
user_agent = 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_2) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/79.0.3945.117 Safari/537.36'
headers = {'Content-type': 'application/json', 'Accept': 'text/plain', 'User-Agent':user_agent}
login_data = {'user':{'email':'id', 'password':'password', 'remember_me':'true'}}
client = requests.session()
login_response = client.post(URL, json = login_data, headers = headers)
print(login_response.content.decode('utf-8'))
jre = 'https://www.example.co.kr/companies/reviews/ent?page=1'
index = client.get(jre)
html = index.content.decode('utf-8')
print(html)
此代码仅获取 page=1,但我想获取 page=1, page=2, page3 .... 使用格式方法。我怎样才能做到这一点?
解决方案
根据您的需要,您应该在每个页面上使用 while oa for 循环。尝试这样的模式:
page = 1
while page <= MAX_PAGE or not REACHED_STOPPING_CONDITION:
# Compose page url
jre = f'https://www.example.co.kr/companies/reviews/ent?page={page}'
# Get page url
index = client.get(jre)
# Do stuff...
# Increment page counter
page += 1
我认为一旦您访问了网站,您就没有必要再次登录。如果需要,您应该将登录部分插入循环中。
浏览网站页面的另一种方法是在文档中找到一种“下一页”或“上一页”引用,然后与它们进行交互:
# Compose page url
jre = 'https://www.example.co.kr/companies/reviews/ent?page=1'
# Get page
index = client.get(jre)
while page <= MAX_PAGE or not REACHED_STOPPING_CONDITION:
# Do stuff...
# Search next page element (ex. by CSS selector)
jre.find_element_by_css_selector('next-page').click()
# Increment page counter
page += 1
推荐阅读
- arrays - 我的数组在下一个 elsif 循环中变为空,但如果在循环之外使用,它仍然保持其值
- reactjs - 当使用 arrayUnion 将元素添加到 firestore 中的 arrayField 时,我得到 TypeError default.collection is not a function
- sqldataadapter - 为什么我的 SQL 数据集总是返回 0 计数?
- javascript - 当我尝试在我的反应应用程序上使用 npm start 时,我不断收到此错误
- typo3 - Typo3 后端注销后清漆不缓存 - be_typo3_user cookie 仍然存在
- jestjs - Jest Throw 错误:TypeError:node.addEventListener 不是函数
- django - 我在 Linux VM 上运行 Djanog runserver 时收到 AttributeError: module 'app' has no attribute 'helpers'
- git - 如何在 git 中获取标签的标题(不是提交)?
- javascript - JS;D3 条形图未定义错误:未捕获类型错误,无法读取属性
- c# - 泛型方法的调用是模棱两可的错误