python 爬虫之获取标题和链接

最近在oschina论坛里发了一些文章,然后呢,今天主要是没有什么内容发布了,所以准备发个小代码。

爬取一下我的oschina论坛内的链接和标题,非常简单,非常容易。

先上代码

from requests_html import HTMLSession
session = HTMLSession()
url = “https://my.oschina.net/u/4798232" r = session.get(url)
for i in range(1, 12):
i = str(i)
urlxpath = ‘//*[@id=”newestBlogList”]/div[1]/div[‘+i+’]/div/a’
bt = r.html.xpath(urlxpath, first=True).text
c = urlxpath+‘/@href’
link = r.html.xpath(c, first=True)
a = “原”
if bt.find(a) == -1:
print(bt)
print(link)
else:
print(bt.replace(a, “”))
print(link)

首先呢,这个是通过xpath来进行操作的,具体如何复制xpath可以看我的zjzdmc.top/jsfx/47.html这篇文章,里面有动图。

然后导入什么库啥的,都是老生常谈的了,在a标签中,你复制的xpath为//*[@id=”newestBlogList”]/div[1]/div[‘+i+’]/div/a这个,然后呢,我们获取标题的话,加上.text这个属性,就会变成文字了,而其中的文字我们可以看f12内的内容,发现其实只有标题,而我们如果需要连接的话,只需要加上这个/@href即可获取链接了。不过目前其实没有找到更好的获取所有文字序列的方法,所以我们直接看最前面的文章id和最后一篇文章的id,记录下来即可。之后我们只需要遍历一下1-12的值即可,然后给字符串添加变量的方法为字符串+变量+字符串即可’//*[@id=”newestBlogList”]/div[1]/div[‘+i+’]/div/a’如文字所示,即可获取所有文章的标题了,然后给之前定义的变量urlxpath后面添加上/@href后,即可获取改xpath内的链接了,之后输出即可了。
不过其实一开始确实遇到了些小问题,比如说我获取xpath的时候发现有的文章的xpath,里面的div多了一个[1],多了一个参数,让我非常困惑,因为就这一个有这个参数,但是后来我尝试了一下,没有添加这个[1]发现还是可以获取该文章的内容,所以其实遇到问题还是要自己尝试的。

之后还有一个小问题,就是之前获取标题的时候,后面需要通过.text变成文字,而获取链接的时候,并不需要的,直接就能输出那个值了。link = r.html.xpath(c, first=True)所以我后面的link并没有加.text了。

可以通过json来将标题和链接保存在文件内,亦或者通过open、write来写入到txt文件内,然后可以通过读取来获取所有的链接,之后查询一下文章内的内容的xpath就可以获取所有的文章内容了。

本作品采用《CC 协议》,转载必须注明作者和本文链接
讨论数量: 0
(= ̄ω ̄=)··· 暂无内容!

讨论应以学习和精进为目的。请勿发布不友善或者负能量的内容,与人为善,比聪明更重要!