【发布时间】:2018-09-29 12:38:31
【问题描述】:
我正在搜索这个website 网站,以获取有关产品描述和价格等产品的信息。该网站使用分页仅加载前 20 个产品,当我进行抓取时,我的程序仅获取前 20 个产品。我怎样才能得到所有这些产品。 这是我的代码
from bs4 import BeautifulSoup
from urllib.request import urlopen
import csv
import random
myfile = open('example.csv', 'w')
def scrape():
page = urlopen('https://www.olx.com.ng/')
soup = BeautifulSoup(page.read(), 'html.parser')
for price, description in zip(soup.findAll('p',
{'class':'_13OzP'}),soup.findAll('p',{'class':'_2uySz'})):
info = price.text + ' -------------------------- ' + description .text
print(info)
` 这是html结构image 的示例图像检查我在图像上用红色标记的区域
【问题讨论】:
-
你不能只用beautifulsoup,考虑使用selenium自动点击下一步按钮,或者是真正的hacky来模拟API请求以获得下一页的结果。
-
为此,您需要使用 selenium 导航到页面并使用 seleniums 加载 javascript 以向下滚动以上传所有数据。我建议先加载所有数据,然后刮掉它。
-
好的,谢谢,请问有什么好的硒教程吗?
-
即使我设法手动加载更多页面,它仍然没有获得所有数据,它仍然只返回前 20 个页面
-
我有时会使用 selenium,但通常有更好的方法,在这种情况下使用 API。
标签: python-3.x web web-scraping beautifulsoup urlopen