我在尝试抓取包含 42 页数据的 http://www.o-review.com/database_filter_model.php?table_name=glasses&tag= 时遇到了一个有趣的问题。我能够成功抓取第一页信息,但是在尝试抓取所有页面时,我发现 URL 保持不变,并且更改页面使用网站底部的按钮。
inspector 中的 html 代码如下:
<div onclick="filter_page('1')" class="filter_nav_button round5"
style="cursor:pointer;"><img src="/images/icon_arrow_next.svg"></div>
我对抓取和 python 非常陌生,但被告知我需要在 javascript 中模拟“点击”,我完全不知道该怎么做,并且不确定它是否可以进行硬编码。到目前为止,我尝试一些东西的尝试很弱:
response = get('http://www.o-review.com/database_filter_model.php?
table_name=glasses&tag=')
soup = bs(response.text, 'html.parser')
print(soup)
for page in range(1, 42):
pages = soup.find('div', onclick_ = 'filter_page()')
希望过去有人解决了这个问题。帮助将不胜感激!谢谢!
编辑:这是我要添加的代码:
## Find All Frame models
for find_frames in soup.find_all('a', class_ = 'round5
grid_model'):
# Each iteration grabs child text and prints it
all_models = find_frames.text
print(all_models)
这将被添加到注释要添加代码的地方!谢谢!
答案 0 :(得分:2)
请求是通过 n_1=input()
n_2=input()
i=0
ch=0
for i in n_1:
if(i in n_2):
if n_1.lower()==n_2.lower():
ch=0
if(ch==0):
print("match")
else:
print("not match")
请求发出的,您可以在其中查看我的 previous-answer 以了解如何获取实际的 POST
还有 API
或 html.parser
不是您的问题的一部分。
我使用 lxml
的原因是根据 documentation
lxml
更快
html.parser
答案 1 :(得分:0)
我看到了这个问题的答案和你的评论。 αԋɱҽԃ αмєяιcαη 的代码有效的原因是它向实际的 ajax api 发送请求,该 ajax api 正在从中获取数据。您可以轻松地使用浏览器的开发人员工具来跟踪它。这不是因为 lxml 或其他什么,你只需要找到正确的来源 ;)
当然,αԋɱҽԃ αмєяιcαη 应该在他的回答中解释一些部分,为你澄清一切。