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

前言:
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

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

猜你喜欢

转载自blog.csdn.net/weixin_41665637/article/details/109182128