文章详情

短信预约-IT技能 免费直播动态提醒

请输入下面的图形验证码

提交验证

短信预约提醒成功

Python爬虫如何爬取网页中所有的url

2023-06-14 16:08

关注

这篇文章主要介绍Python爬虫如何爬取网页中所有的url,文中介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们一定要看完!

python可以做什么

Python是一种编程语言,内置了许多有效的工具,Python几乎无所不能,该语言通俗易懂、容易入门、功能强大,在许多领域中都有广泛的应用,例如最热门的大数据分析,人工智能,Web开发等。

在使用python爬虫进行网络页面爬取的过程中,第一步肯定是要爬取url,若是面对网页中很多url,,又该如何爬取所以url呢?本文介绍Python爬虫爬取网页中所有的url的三种实现方法:1、使用BeautifulSoup快速提取所有url;2、使用Scrapy框架递归调用parse;3、在get_next_url()函数中调用自身,递归循环爬取所有url。

方法一:使用BeautifulSoup快速提取所有url

BeautifulSoup是一种可以从html和xml中快速提取内容的python库

    def getAllUrl(self,url):        import urllib.request        from bs4 import BeautifulSoup        html = urllib.request.urlopen(url).read().decode("utf-8")        soup = BeautifulSoup(html, features='html.parser')        tags = soup.find_all('a')        for tag in tags:            print(str(tag.get('href')).strip())

方法二:使用Scrapy框架递归调用parse

递归调用parse直到每个页面爬取完

class QiubaiSpider(scrapy.Spider):    name = 'qiubai'    # allowed_domains = ['www.qiushibaike.com/text']    start_urls = ['https://www.qiushibaike.com/text/']    # 设计一个url模板    url = 'https://www.qiushibaike.com/text/page/%d/'    pageNum = 1    def parse(self, response):        div_list = response.xpath("//div[@id='content-left']/div")        for div in div_list:            ....            # 将item提交给管道            yield item        # 多url, 请求的手动发送        if self.pageNum <= 13:  # 控制!否则无限递归了。。            self.pageNum += 1            print('爬第:%d 页' % self.pageNum)            new_url = self.url % self.pageNum            # callback 回调函数,页面进行解析            yield scrapy.Request(url=new_url, callback=self.parse)

方法三:在get_next_url()函数中调用自身,递归循环爬取所有url

#!/usr/bin/env python # -*- coding:utf-8 -*-import requestsfrom bs4 import BeautifulSoup as Bs4head_url = "http://www.xxx.com.cn"headers = {    "User-Agent": "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko)     Chrome/72.0.3626.121 Safari/537.36"}def get_first_url():    list_href = []    reaponse = requests.get(head_url, headers=headers)    soup = Bs4(reaponse.text, "lxml")    urls_li = soup.select("#mainmenu_top > div > div > ul > li")    for url_li in urls_li:        urls = url_li.select("a")        for url in urls:            url_href = url.get("href")            list_href.append(head_url+url_href)            out_url = list(set(list_href))    return out_urldef get_next_url(urllist):    url_list = []    for url in urllist:        response = requests.get(url,headers=headers)        soup = Bs4(response.text,"lxml")        urls = soup.find_all("a")        if urls:            for url2 in urls:                url2_1 = url2.get("href")                if url2_1:                    if url2_1[0] == "/":                        url2_1 = head_url + url2_1                        url_list.append(url2_1)                        if url2_1[0:24] == "http://www.xxx.com.cn":                            url2_1 = url2_1                            url_list.append(url2_1)                        else:                            pass                    else:                        pass                else:                    pass        else:            pass    url_list2 = set(url_list)    for url_ in url_list2:        res = requests.get(url_)        if res.status_code ==200:            print(url_)    print(len(url_list2))    get_next_url(url_list2)if __name__ == "__main__":    urllist = get_first_url()    get_next_url(urllist)

以上是“Python爬虫如何爬取网页中所有的url”这篇文章的所有内容,感谢各位的阅读!希望分享的内容对大家有帮助,更多相关知识,欢迎关注编程网行业资讯频道!

阅读原文内容投诉

免责声明:

① 本站未注明“稿件来源”的信息均来自网络整理。其文字、图片和音视频稿件的所属权归原作者所有。本站收集整理出于非商业性的教育和科研之目的,并不意味着本站赞同其观点或证实其内容的真实性。仅作为临时的测试数据,供内部测试之用。本站并未授权任何人以任何方式主动获取本站任何信息。

② 本站未注明“稿件来源”的临时测试数据将在测试完成后最终做删除处理。有问题或投稿请发送至: 邮箱/279061341@qq.com QQ/279061341

软考中级精品资料免费领

  • 历年真题答案解析
  • 备考技巧名师总结
  • 高频考点精准押题
  • 2024年上半年信息系统项目管理师第二批次真题及答案解析(完整版)

    难度     807人已做
    查看
  • 【考后总结】2024年5月26日信息系统项目管理师第2批次考情分析

    难度     351人已做
    查看
  • 【考后总结】2024年5月25日信息系统项目管理师第1批次考情分析

    难度     314人已做
    查看
  • 2024年上半年软考高项第一、二批次真题考点汇总(完整版)

    难度     433人已做
    查看
  • 2024年上半年系统架构设计师考试综合知识真题

    难度     221人已做
    查看

相关文章

发现更多好内容

猜你喜欢

AI推送时光机
位置:首页-资讯-后端开发
咦!没有更多了?去看看其它编程学习网 内容吧
首页课程
资料下载
问答资讯