当当网
pyquery库
# 图书主页URL、图书标题(名字)、价格、作者、出版日期、出版社、评论数、简介
from pyquery import PyQuery as pq
import requests
import time
# 下载指定URL网页
def get_one_page(url):
try:
res=requests.get(url)
if res.status_code==200:
return res.text
return None
except Exception:
return None
# 分析搜索产生器函数
def parse_one_page(html):
doc=pq(html)
# 提取包含所有li节点的ul节点
ul=doc('.bigimg')
liList=ul('li')
# 对li节点集合进行迭代,必须使用items方法返回可迭代对象,每个item都是PyQuery对象
for li in liList.items():
# 获取当前li节点中第1个a节点
a=li('a:first-child')
print(a)
print(a[0])
# 获取图书页面URL
href=a[0].get('href')[1:]
# 获取图书名字
title=a[0].get('title')
# 抓取class属性值为search_now_price的节点
span=li('.search_now_price')
print(span)
# 获取价格
price=span.text()[1:]
# 抓取class属性值为search_book_author的节点
p=li('.search_book_author')
# 获取作者
author=p('a:first-child').attr('title')
# 获取出版时间
date=p('span:nth-child(2)').text()[0:]
# 出版社
publisher=p('span:nth-child(3) > a').text()
# 评论数
comment_num=li('.search_comment_num').text()[:-3]
# 简介
detail=li('.detail').text()
yield {
'href':href,
'title':title,
'price':price,
'author':author,
'date':date,
'publisher':publisher,
'comment_num':comment_num,
'detail':detail
}
if __name__ == '__main__':
urls=['https://search.dangdang.com/?key=python&act=input&page_index={}'.format(i) for i in range(1,3)]
for url in urls:
book_infos=parse_one_page(get_one_page(url))
for book_info in book_infos:
print(book_info)
time.sleep(0.5)