xpath提取当当网数学书前十页信息

'''
http://category.dangdang.com/cp01.03.51.00.00.00.html

get

这些书都在一个个的li标签里,先获取所有的li,再分别对每一个li进行xpath提取,可以避免要提取的字段是空最后数据错位的情况

第二页  http://category.dangdang.com/pg2-cp01.03.51.00.00.00.html
第三页  http://category.dangdang.com/pg3-cp01.03.51.00.00.00.html
'''
import requests
from lxml import etree

# 处理空数据
def get_result(mstr) -> str:
    if mstr:    # 不是空
        return  mstr[0] # xpath处理的是列表,返回字符串
    else:
        return None

# 取前十页
for i in range(1,11):
    if i == 1:
        res = requests.get(f'http://category.dangdang.com/cp01.03.51.00.00.00.html')
    else:
        res = requests.get(f'http://category.dangdang.com/pg{i}-cp01.03.51.00.00.00.html')

    # 将字符串节点化
    html = etree.HTML(res.text)
    li_list = html.xpath('//ul[@class="bigimg"]/li')

    # 遍历每一个li,即每一本书
    for li in li_list:
        # 加 . 是当前li开始提取
        title = get_result(li.xpath('.//a[@name="itemlist-title"]/@title'))   # 标题
        price = get_result(li.xpath('.//span[@class="search_now_price"]/text()'))    # 售价
        e_price = get_result(li.xpath('.//a[@class="search_e_price"]/i/text()'))     # 电子书价格
        author = get_result(li.xpath('.//a[@name="itemlist-author"]/text()'))        # 作者
        publish_time = get_result(li.xpath('//p[@class="search_book_author"]/span[2]/text()'))  # 出版日期
        press = get_result(li.xpath('.//a[@name="P_cbs"]/text()'))   # 出版社
        evaluate = get_result(li.xpath('.//span[@class="search_star_black"]/span/@style'))   # 评价星级
        e_nums = get_result(li.xpath('.//a[@name="itemlist-review"]/text()'))    # 评论条数
        details = get_result(li.xpath('.//p[@class="detail"]/text()'))   # 详情
        img_url = get_result(li.xpath('.//a[@name="itemlist-picture"]/img/@data-original | .//a[@name="itemlist-picture"]/img/@src'))    # 图片链接
        with open('当当网历史书前十页.txt', 'a', encoding='utf-8') as fw:
            fw.write(f'''
书名:{title}
纸质价格:{price}
电子书价格:{e_price}
作者:{author}
出版时间:{publish_time}
出版社:{press}
评价星级:{evaluate}
评论条数:{e_nums}
详情:{details}
图片链接:{img_url}
{'=' * 100}''')






xpath提取当当网数学书前十页信息_第1张图片

你可能感兴趣的:(python)