首页 > 其他分享 >还是request 香啊,总之,urllib,urllib3,requests总有一个管用。可以结合GPT多角度尝试

还是request 香啊,总之,urllib,urllib3,requests总有一个管用。可以结合GPT多角度尝试

时间:2023-09-18 21:16:42浏览次数:28  
标签:url list urllib3 request urllib content text page

import requests
from lxml import etree

def create_request(page):
    if page == 1:
        url = 'http://www.zhb.org.cn/hbzx/news_2'
    else:
        url = 'http://www.zhb.org.cn/hbzx/news_2/index_' + str(page) + '.html'
    headers = {
        'Host': 'www.zhb.org.cn',
        'Upgrade-Insecure-Requests': '1',
        'User-Agent' : 'Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/116.0.0.0 Safari/537.36'
    }
    request = requests.get(url, headers=headers)
    return request

def get_content(request):
    content = request.content
    return content

def get_hreflist(content):
    url_list = []
    tree = etree.HTML(content)
    href_list = tree.xpath('//div[@class="newsbox_2"]//li/a/@href')
    href_list = [item for item in href_list if item != "javascript:;"]
    url = 'http://www.zhb.org.cn'
    for i in range(len(href_list)):
        new_url = url + href_list[i]
        url_list.append(new_url)
    return url_list
    

def download_text(url_list):
    failed_page_num = 0
    for url in url_list:
        try:
            headers = {
                'Host': 'www.zhb.org.cn',
                'If-Modified-Since': 'Sun, 17 Sep 2023 16:48:28 GMT',
                'If-None-Match': '"42c4b-7865-60590cb85967c"',
                'Upgrade-Insecure-Requests': '1',
                'User-Agent' : 'Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/116.0.0.0 Safari/537.36'
            }
            response = requests.get(url, headers=headers)
            content = response.content
            tree = etree.HTML(content)
            name = tree.xpath('//div[@class="news_titlenr"]/text()')[0]+'.txt'
            name = name.replace("/","")
            save_path = './中国环境保护协会/新闻/'+name
            text = tree.xpath('//div[@class="news_nrbox"]//p/text()')
            result = ''
            for t in text:
                result = result + '\n' + t
            with open(save_path,'w',encoding='utf-8') as fp:
                fp.write(result)
        except:
            failed_page_num += 1
            print("{} pages failed in this page".format(failed_page_num))
            pass

if __name__ == '__main__':
    start_page = 2
    end_page = 263
    
    for page in range(start_page,end_page+1):
        request = create_request(page)  # 导入了第page页
        content = get_content(request)  # 获得第page页的源代码
        url_list = get_hreflist(content) # 获得第page页所有的新闻链接
        download_text(url_list) #下载第page页所有的新闻文本
        print('第' + str(page) + '页下载完成')

 

标签:url,list,urllib3,request,urllib,content,text,page
From: https://www.cnblogs.com/qtdwz/p/17713042.html

相关文章

  • 使用Python的requests库自定义请求
    importrequestsfromrequestsimportRequest,Sessionurl="http://challenge-d590d34746e26bc5.sandbox.ctfhub.com:10800/index.php"headers={"user-agent":"Mozilla/5.0(WindowsNT10.0;Win64;x64)AppleWebKit/537.36(KHTML,lik......
  • 利用Spring随时随地获得Request和Session
    利用Spring随时随地获得Request和Session一、准备工作:在web.xml中添加  1.<listener>2.<listener-class>3.org.springframework.web.context.request.RequestContextListener4.</listener-class>5.</listener> 二......
  • python之爬虫requests
    importrequestsresult=requests.get("https://127.0.0.1:9200/_search",headers=headers,verify=False)#verify跳过ssl认证关于http的authorization认证......
  • [Servlet/Tomcat] HttpServletRequest#getHeader(headerNameWithIgnoreCase)(获取heade
    1故事背景最近项目上有个业务需求,翻译成技术需求,即:将request.headers中的几个header入参转换成request.body(pageRequest)中的内置参数。为便于灵活配置,header参数名称是动态可配置的(存放于nacos配置中心),比如:sysCode、Accept-Language技术实现,主要就springmvc的org.spr......
  • The server is temporarily unable to service your request due to maintenance
    访问不了就是这个路径没有通 有几下几点最重要的就是看一下你的路径有没有错主要就是看一下你服务器的端口号是不是变更了或者就是你的ip、第二点就是看一下你的服务器有没有启动这两点是最主要的 ......
  • requests中post参数data和json区别:
    HTTP协议规定将一个完整的HTTP请求分为三个部分:请求头、请求行、请求体 大概框架如下: <method><request-URL><version> <headers> <body> POSThttp://httpbin.orgHTTP/1.1 Content-Type:application/x-www-form-urlencoded;charset=utf-8 a_test=112233&b_test=223......
  • 访问前台页面${pageContext.request.contextPath}/el表达式失效问题解决
    最近在做项目整合这个问题,然后在项目整合的时候,遇到了好多问题,这是其中一个,在此留作记录吧,虽然关键点不是我处理好的。访问前端页面,我先描述一下具体出现的现象:我访问前端jsp页面的时候,jquery文件,js,css样式等都会失效,也就是没有引入到jsp页面当中。查看浏览器console的时候,发现${pa......
  • 部署错误解决(An error occurred while processing your request.)
     Anerroroccurredwhileprocessingyourrequest.RequestID:00-613112becd7848f0226b77690eb71d00-3769cb0d7144d878-00DevelopmentModeSwappingtoDevelopmentenvironmentwilldisplaymoredetailedinformationabouttheerrorthatoccurred.TheDevelo......
  • JavaEE核心____Request获取的基本路径结果
    假定你的工程名称为projects,你在浏览器中输入请求路径:http://127.0.0.1:8080/taobao/user/userMain.jsp则执行下面向行代码后打印出如下结果:1、System.out.println(request.getContextPath());打印结果:/taobao2、System.out.println(request.getServletPath());打印结果:/u......
  • Python - 接口自动化(Requests)
    1、requests简介如果想用python做接口测试,我们首先有不得不了解和学习的模块。它就是python的第三方模块:Requests。虽然Python内置有urllib模块用于访问网络资源。但是,它用起来比较麻烦,而且,缺少很多实用的高级功能。所以呢更好的方案是使用requests。它也是目前应用最广泛、最......