爬虫获取新闻的内容【5】

it2023-05-05  74

前言: 1、先把被测网站的url抓取出来 2、再抓取新闻的内容 3、把要抓取的字段取到,并打印出来 4、因为url是多个,所以用到了for循环 5、因为有的新闻可以取到,有的新闻取不到,所以加了if判断 6、把要抓取的数据取到,然后打印出来 7、可以把打印的数据,用xls放到,但是我实在搞不出来。所以我的笨办法就是一行一行打印,手动粘到excle,然后光用就行。

1、寻找被测网站

被测对象:http://www.ga.dl.gov.cn/index.php?app=jwzx&act=newslist&id=6&page=1

2、找到URL地址

代码: 以下代码找到所有文章的URL地址

import requests from lxml import etree #把代码存入本地 data = open(r'D://hello3.xls', 'w') for x in range(1,5):#循环1,2,3,4页 s = str(x) url1 = 'http://www.ga.dl.gov.cn/index.php?app=jwzx&act=newslist&id=6&page=' + s r = requests.get(url1).content topic=etree.HTML(r) url=topic.xpath('//div[@class="jwzxListLeft fl"]//li/a/@href')#xpath 查url for i in url: # print(i) #把地址存入本地 data.write(i+'\n') data.close()

想法:把新闻的url都拿到,然后再去把每个url的新闻抓到 3、抓每个网站的来源、新闻内容、新闻标题

import requests from lxml import etree f = open('D://111111111111111111111111111.txt', 'rb') # 以只读方式打开一个文件,获取文件句柄,如果是读的话,r可以不写,默认就是只读, line = f.readlines() for i in line: data = i.decode() messae = data.strip() a = 'http://www.ga.dl.gov.cn/' + messae#利用for循环,取多个url r=requests.get(a).content#解析url topic=etree.HTML(r) texts =topic.xpath('//*[@class="artCon"]/p/span/text()')#xpath取新闻内容 title = topic.xpath('//*[@class="artTit"]/h1/text()')#xpath取新闻标题 title1 = ''.join(title)#把列表转为str类型 source =topic.xpath('//*[@class="abs"]/span[1]/text()') source1 = ''.join(source)[3:]#把列表类型转为str 新闻来源只要后面来源: 之后 表示[3:] 如果是3之前 [3:] text = [x for x in texts]#链接地址 也就是html的地址 (列表推导式,把新闻内容写入列表) if text != []: print(a,title1,source1,text)# 因为抓取的数据,有的有,有的没有,所以把有数据的打印出来

4、找到文章的内容

以下代码可以参考

文章查看和下载:https://blog.csdn.net/weixin_41665637/article/details/103051444 python读取文件和存入文件模板:https://blog.csdn.net/weixin_41665637/article/details/103030166 爬虫 xpath :https://blog.csdn.net/weixin_41665637/article/details/90637175

备注:大家那些有疑问,欢迎留言。 谁帮忙解决文件下载,也请留言告诉一下,怎么做的。谢谢~~~

最新回复(0)