python 爬取人民新闻

基础信息获取:

要闻url:https://www.gov.cn/yaowen/liebiao/home.htm

下一页的url:https://www.gov.cn/yaowen/liebiao/home_1.htm

基础代码:

python 复制代码
import re
import openpyxl
import requests
from lxml import etree
import os

def download_xinwen():
    basic_url = 'https://www.gov.cn/yaowen/liebiao/home.htm'
    for num in range(1, 5):
        print(f"Downloading:第{num}页")
        new_url = 'https://www.gov.cn/yaowen/liebiao/home_{}.htm'.format(num)
        headers = {'user-agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/122.0.0.0 Safari/537.36'}
        response = requests.get(new_url, headers=headers)
        response.encoding = 'utf8'
        # print(response.text)
        html = etree.HTML(response.text)
        xinwen_info = html.xpath('//div//li//h4/a/text()')
        xinwen_lianjie = html.xpath('//h4/a/@href')
        for describe, download_url in zip(xinwen_info, xinwen_lianjie):
            print("新闻标题:", describe, "|", "新闻链接:", download_url)
            # if "https" not in download_url:
            #     original_str = download_url
            #     new_str = original_str.replace("./", "")
            #     download_url ="https://www.gov.cn/yaowen/liebiao/" + new_str
            #     # print(download_url)
            # print("新闻标题:", describe, "|", "新闻链接:", download_url)



            # new_xinwen_url = download_url.split('.')[-1]
            # print(new_xinwen_url)


download_xinwen()

返回:

可以看到有的url链接爬取下来之后不是全路径,针对这个问题加上如下代码:

在for循环内加上判断,如果https不在url列表里,说明这个url不是全路径,将./全部替换成空字符,再拼接下基础url,这样遍有了url全路径

python 复制代码
             if "https" not in download_url:
                 original_str = download_url
                 new_str = original_str.replace("./", "")
                 download_url ="https://www.gov.cn/yaowen/liebiao/" + new_str
                
             print("新闻标题:", describe, "|", "新闻链接:", download_url)

再次运行调试:

url连接都是全路径了

相关推荐
吾爱星辰2 小时前
Kotlin 处理字符串和正则表达式(二十一)
java·开发语言·jvm·正则表达式·kotlin
ChinaDragonDreamer2 小时前
Kotlin:2.0.20 的新特性
android·开发语言·kotlin
FreakStudio2 小时前
全网最适合入门的面向对象编程教程:56 Python字符串与序列化-正则表达式和re模块应用
python·单片机·嵌入式·面向对象·电子diy
IT良2 小时前
c#增删改查 (数据操作的基础)
开发语言·c#
丶21362 小时前
【CUDA】【PyTorch】安装 PyTorch 与 CUDA 11.7 的详细步骤
人工智能·pytorch·python
Kalika0-03 小时前
猴子吃桃-C语言
c语言·开发语言·数据结构·算法
_.Switch3 小时前
Python Web 应用中的 API 网关集成与优化
开发语言·前端·后端·python·架构·log4j
代码雕刻家3 小时前
课设实验-数据结构-单链表-文教文化用品品牌
c语言·开发语言·数据结构
一个闪现必杀技3 小时前
Python入门--函数
开发语言·python·青少年编程·pycharm
Fan_web3 小时前
jQuery——事件委托
开发语言·前端·javascript·css·jquery