解析网页,获取关键信息,保存至本地或者数据库中。
selenium
from collections import OrdereDict #有序字典
from selenuim import webdriver
from selenium.webdriver.support.ui import WebDriverWait
from pyquery import PyQuery as pq
browser = webdriver.Firefox()
wait = WebDriverWait(browser,10)
def get_products(url):
browser.get(url)
wait.until(EC.presence_of_all_elements_located((By.CSS_SELECTOR,'#mainsrp-itemlist .items .item'))) #加载所有宝贝
html=browser.page_source
doc = pq(html)
# print(doc)
items = doc('#mainsrp-itemlist .items .item').items()
for item in items:
product = {
# 获取 image 时,用'src'总有部分图片获取不到,因为淘宝设有'data-src' 和'src',不同商品这两个属性的前后顺序不一样,直接用'data-src'可避免返回 None
'image':item.find('.pic .img').attr('data-src'),#用find去获取内部元素,选择器是 pic,img,用attr获取属性
# 'image':item.find('.pic-box-inner').find('.pic').find('img').attr['src'],
'price':item.find('.price').text()[1:-3], # 用text获取内容
'shop_id': item.find('.shop').find('a').attr('data-userid'), # 店铺 id
'data_id': item.find('.shop').find('a').attr('data-nid'), # 商品 id
'link': item.find('.pic-box-inner').find('.pic').find('a').attr['href'],
'deal':item.find('.deal-cnt').text()[:-3],
'title':item.find('.title').text(),
'shop':item.find('.shop').text(),
'location':item.find('.location').text().replace(' ','')
}
# print(product)