本攻略将介绍如何使用selenium和pyquery爬取京东商品列表。selenium是一个自动化测试工具,可以模拟用户在浏览器中的操作,例如点击、输入和滚动等。pyquery是一个Python库,可以解析HTML和XML文档,并提供类似于jQuery的API。
实现京东商品列表爬取
以下是一个示例代码,用于实现京东商品列表爬取:
from selenium import webdriver
from pyquery import PyQuery as pq
url = 'https://search.jd.com/Search?keyword=python&enc=utf-8'
browser = webdriver.Chrome()
browser.get(url)
while True:
try:
button = browser.find_element_by_css_selector('.pn-next')
button.click()
except:
break
html = browser.page_source
doc = pq(html)
items = doc('.gl-item').items()
for item in items:
title = item.find('.p-name em').text()
price = item.find('.p-price i').text()
print(title, price)
在上面的代码中,我们使用selenium库创建一个Chrome浏览器对象,并使用get方法打开京东商品列表页面。我们使用while循环遍历所有分页按钮,并使用click方法模拟点击操作。如果没有下一页按钮,我们使用break语句退出循环。
我们使用page_source属性获取当前页面的HTML代码,并使用pyquery库解析HTML代码。我们使用items方法获取所有商品列表项,并使用for循环遍历所有商品列表项。我们使用find方法查找商品标题和价格,并使用text方法获取其文本内容。最后,我们使用print函数打印商品标题和价格。
示例1:爬取京东手机列表
以下是一个示例代码,用于爬取京东手机列表:
from selenium import webdriver
from pyquery import PyQuery as pq
url = 'https://search.jd.com/Search?keyword=手机&enc=utf-8'
browser = webdriver.Chrome()
browser.get(url)
while True:
try:
button = browser.find_element_by_css_selector('.pn-next')
button.click()
except:
break
html = browser.page_source
doc = pq(html)
items = doc('.gl-item').items()
for item in items:
title = item.find('.p-name em').text()
price = item.find('.p-price i').text()
print(title, price)
在上面的代码中,我们使用selenium库创建一个Chrome浏览器对象,并使用get方法打开京东手机列表页面。我们使用while循环遍历所有分页按钮,并使用click方法模拟点击操作。如果没有下一页按钮,我们使用break语句退出循环。
我们使用page_source属性获取当前页面的HTML代码,并使用pyquery库解析HTML代码。我们使用items方法获取所有商品列表项,并使用for循环遍历所有商品列表项。我们使用find方法查找商品标题和价格,并使用text方法获取其文本内容。最后,我们使用print函数打印商品标题和价格。
示例2:爬取京东图书列表
以下是另一个示例代码,用于爬取京东图书列表:
from selenium import webdriver
from pyquery import PyQuery as pq
url = 'https://search.jd.com/Search?keyword=Python&enc=utf-8&book=y'
browser = webdriver.Chrome()
browser.get(url)
while True:
try:
button = browser.find_element_by_css_selector('.pn-next')
button.click()
except:
break
html = browser.page_source
doc = pq(html)
items = doc('.gl-item').items()
for item in items:
title = item.find('.p-name em').text()
price = item.find('.p-price i').text()
print(title, price)
在上面的代码中,我们使用selenium库创建一个Chrome浏览器对象,并使用get方法打开京东图书列表页面。我们使用while循环遍历所有分页按钮,并使用click方法模拟点击操作。如果没有下一页按钮,我们使用break语句退出循环。
我们使用page_source属性获取当前页面的HTML代码,并使用pyquery库解析HTML代码。我们使用items方法获取所有商品列表项,并使用for循环遍历所有商品列表项。我们使用find方法查找商品标题和价格,并使用text方法获取其文本内容。最后,我们使用print函数打印商品标题和价格。
本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:使用selenium和pyquery爬取京东商品列表过程解析 - Python技术站