提取网页网站-lxml结合xpath语法实例二(数据提取)

这一篇文章爬取我博客内容并且按照输入提示保存
有关参考
爬取文章标题:https://www.cnblogs.com/lcyzblog/p/11275188.html
源码分析:文本存放于div的clss属性为postBody的标签下

from lxml import etree
import requests

get_cookie = requests.session()

def get_titles_and_blogurl():
    global url_blog
    global title_blog
    url_get_cookies = 'https://www.cnblogs.com/'
    blog_url = "https://www.cnblogs.com/lcyzblog/"
    header = {
        'user-agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/75.0.3770.142 Safari/537.36'}
    get_cookie.get(url=url_get_cookies, headers=header)
    html_blog = get_cookie.get(blog_url)
    myblog_html = etree.HTML(html_blog.text)
    #get_myblog_title用于获取博客文章标题
    #get_myblog_url用于获取博客链接
    get_myblog_title = "//div[@class='postTitle']/a/text()"
    get_myblog_url="//div[@class='postTitle']/a/@href"
    title_blog=myblog_html.xpath(get_myblog_title)
    url_blog=myblog_html.xpath(get_myblog_url)
    blog_main=dict(zip(title_blog,url_blog))
    print(blog_main)
    return blog_main

def get_main(text_note):
    #利用字典得到文章的标题去得到文章对应的url
    main_blog_url=main_is_blog[text_note]
    main_blog_html=get_cookie.get(main_blog_url)
    blog_main_html=etree.HTML(main_blog_html.text)
    main_blog_xpath="//div[@class='postBody']//text()"
    main_blog_text = blog_main_html.xpath(main_blog_xpath)
    print(main_blog_text)
    numbers = input("是否需要保存文章?(yes/no)到本地:  ")

    if numbers=="yes":
        with open("./"+text_note+".txt",'w',encoding='utf-8') as fp:
            for str_blog in main_blog_text:
                fp.write(str_blog)

    else:
        return main_blog_text



if __name__ == '__main__':
    #得到博客文章的标题和url
    main_is_blog=get_titles_and_blogurl()
    note = input("请输入查看的文章:")
    get_main(text_note=note)

  

转载于:https://www.cnblogs.com/lcyzblog/p/11305985.html

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值