概述
为了每天晚上给女朋友讲故事,我决定爬取一些文章存在手机里每晚为她读一篇。于是就目光锁定在文章阅读网的爱情专栏。
首先,做好爬取准备,理清一下爬取的思路
-
进入文章阅读网,点击爱情文章
-
我们的目标要爬取的是文章的题目和内容,往下拉会看到爱情文章这个专栏总共有109页。
-
现在知道这些就已经做到心里有数了,接下来打开pycharm开始代码准备吧。
-
打开pycharm,新建一个sanwen.py
from urllib import request
from lxml import etree
import requests
#首先定义一个请求头
headers = {
'User-Agent' : 'Mozilla/5.0 (Windows NT 10.0; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/79.0.3945.88 Safari/537.36'
}
在此网站打开开发者工具,刷新下页面,点击Network,找到User-Agent,粘贴复制即可。
刚才说的共109页,需要全部爬取下来,看了每次下一页的url链接,有个规律
这一个总共109页,每次变得只是这个属性的值的数字发生变化,所以我这样做
#这是一个完整的url代码需要与上述的代码结合才能得到每一页
url_1 = 'http://www.duwenzhang.com/wenzhang/aiqingwenzhang/'
for i in range(110):
if i >= 1:
page_url = 'list_1_' + str(i) + '.html'
#下一页
next_page = url_1 + page_url
#请求网页
res = requests.get(next_page)
#看到网页源代码是gb2312
res.encoding = 'gb2312'
#将网页代码转化成xml语言,便于xpath提取
res_xpath = etree.HTML(res.text)
#获取一页中的所有文章标题的url
titles_url = res_xpath.xpath("//table[@class='tbspan']//tr[2]//b/a/@href")
#遍历每一页的url,即每一篇文章的url
for title_url in titles_url:
#请求网页
content = requests.get(title_url)
content.encoding = 'gb2312'
content_xpath = etree.HTML(content.text)
content_text = content_xpath.xpath(".//div[@id='wenzhangziti']/p//text()")
#上行代码得到的是一个列表,要把它变成字符串
content_text_strs = " ".join(content_text)
#拿到文章的标题
title = content_xpath.xpath(".//td/h1/text()")
#变成字符串
title_strs = " ".join(title)
#写入txt文件
f = open("sanwen.txt","a",encoding='utf-8')
f.write(title_strs)
f.write("n")
f.write(content_text_strs)
f.write("n完篇=======")
f.close()
#为了方便查看程序运行的状态
print("已写入了"+str(i)+"页")
解释一下,代码里的xpath寻找方法:
得到h1的文本用text()方法
这个网站的反爬虫机制,并没有限制太大,甚至说没有反爬虫,相对容易些。
又再次运行了一下,完结撒花。
最后
以上就是大胆酒窝为你收集整理的python爬取文章阅读网实战的全部内容,希望文章能够帮你解决python爬取文章阅读网实战所遇到的程序开发问题。
如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。
本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
发表评论 取消回复