糗事百科在线解析之xpath应用

解析网站:https://www.qiushibaike.com/text/
解析用户和内容

python代码:

import urllib.request
import urllib.parse
from lxml import etree
import time
import json

item_list=[]
def handle_request(url,page):
    # url=url+str(page)+'/'
    headers={

        'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/69.0.3497.100 Safari/537.36',

    }
    url=url.format(page)
    
    request=urllib.request.Request(url=url,headers=headers)
    return request
def content_parse(content):
    #使用xpath在线解析
    tree=etree.HTML(content)
    qiushi_list=tree.xpath('//div[starts-with(@id,"qiushi_tag")]')
    # print(qiushi_list)
    # print(len(qiushi_list))
    for qiushi in qiushi_list:
        zuozhe=qiushi.xpath('.//div[@class="author clearfix"]//h2/text()')[0]
        # print(zuozhe)
        neirong=qiushi.xpath('.//div[@class="content"]/span/text()')

        # print(neirong)
        item={
        '作者':zuozhe,
        '内容':neirong,
        }
        #将内容添加到列表中
        item_list.append(item)

def main():
    url='https://www.qiushibaike.com/text/page/{}/'
    start_page=int(input('请输入起始页码:'))
    end_page=int(input('请输入结束页码:'))
    for page in range(start_page,end_page + 1):
        #构建请求对象
        request=handle_request(url,page)
        print('开始下载%s页' % page)
        #获取响应
        content=urllib.request.urlopen(request).read().decode()
        #解析内容
        content_parse(content)
        print('结束下载%s页' % page)
        time.sleep(2)
        #写入到文件中
        string=json.dumps(item_list,ensure_ascii=False)

        with open('baikeduanzi.txt','w',encoding='utf8') as fp:
            fp.write(string)

if __name__ == '__main__':
    main()
    print("下载完成...")
    print("请查看当前路径下的baikeduanzi.txt文件")

解析后:


©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • # Python 资源大全中文版 我想很多程序员应该记得 GitHub 上有一个 Awesome - XXX 系列...
    小迈克阅读 3,055评论 1 3
  • 第一部分 HTML&CSS整理答案 1. 什么是HTML5? 答:HTML5是最新的HTML标准。 注意:讲述HT...
    kismetajun阅读 27,741评论 1 45
  • ¥开启¥ 【iAPP实现进入界面执行逐一显】 〖2017-08-25 15:22:14〗 《//首先开一个线程,因...
    小菜c阅读 6,536评论 0 17
  • 话不多说,用实际行动支持电影《我不是药神》二刷。 希望这部电影的上映,能有更多的重大疾病可以纳入医保范畴,至少让这...
    乘格帆阅读 281评论 3 2
  • 1) 时间,打着卷, 象一朵朵昙花, 开了又败,败了又开。 夜黑,垂下来, 垂下她万千缕秀发, 垂到夏的树枝上, ...
    诗与远方工作室阅读 133评论 0 0