介绍
这篇文章主要介绍Python爬虫如何爬取网页中所有的url,文中介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们一定要看完!
Python可以做什么
Python是一种编程语言,内置了许多有效的工具,Python几乎无所不能,该语言通俗易懂,容易入门,功能强大,在许多领域中都有广泛的应用,例如最热门的大数据分析,人工智能,网页开发等。
在使用Python爬虫进行网络页面爬取的过程中,第一步肯定是要爬取url,若是面对网页中很多url,,又该如何爬取所以url呢?本文介绍Python爬虫爬取网页中所有的url的三种实现方法:1、使用BeautifulSoup快速提取所有的url; 2、使用Scrapy框架递归调用解析;3、在get_next_url()函数中调用自身,递归循环爬取所有url。
<强>方法一:使用BeautifulSoup快速提取所有url 强>
BeautifulSoup是一种可以从html和xml中快速提取内容的Python库
<>之前,,,,def getAllUrl(自我、url): ,,,,,,,import urllib.request ,,,,,,,得到bs4 import BeautifulSoup ,,,,,,,html =, urllib.request.urlopen (url) .read () .decode (“utf-8") ,,,,,,,soup =, BeautifulSoup (html、,特性=& # 39;html.parser& # 39;) ,,,,,,,tags =, soup.find_all(& # 39;一个# 39;) ,,,,,,,for tag 拷贝标签: ,,,,,,,,,,,印刷(str (tag.get (& # 39; href # 39;)) .strip ()) <强>方法二:使用Scrapy框架递归调用解析强>
递归调用解析直到每个页面爬取完
class QiubaiSpider (scrapy.Spider): ,,,name =, & # 39; qiubai& # 39; ,,,#,allowed_domains =, (& # 39;www.qiushibaike.com/text& # 39;) ,,,start_urls =, (& # 39; https://www.qiushibaike.com/text/& # 39;) ,,,#,设计一个url模板 ,,,url =, & # 39; https://www.qiushibaike.com/text/page/%d/& # 39; ,,,pageNum =1 ,,,def 解析(自我,,反应): ,,,,,,,div_list =, response.xpath (“//div [@ id=& # 39; content-left& # 39;]/div") ,,,,,,,for div 拷贝div_list: ,,,,,,,,,,,.... ,,,,,,,,,,,#,将项目提交给管道 ,,,,,,,,,,,油品收率 ,,,,,,,#,多url,请求的手动发送 ,,,,,,,if self.pageNum & lt;=, 13:,, #,控制!否则无限递归了. . ,,,,,,,,,,,self.pageNum +=1 ,,,,,,,,,,,印刷(& # 39;爬第:% d 页& # 39;,%,self.pageNum) ,,,,,,,,,,,new_url =, self.url % self.pageNum ,,,,,,,,,,,#,callback 回调函数,页面进行解析 ,,,,,,,,,,,油品收率scrapy.Request (url=new_url,回调=self.parse)
<强>方法三:在get_next_url()函数中调用自身,递归循环爬取所有url 强>
# !/usr/bin/env python #,- *安康;编码:utf-8 - * import 请求 得到bs4 import  BeautifulSoup as  Bs4 时间=head_url “http://www.xxx.com.cn" headers =, { ,,,“User-Agent":,“Mozilla/5.0, (Windows NT 10.0;, Win64;, x64), AppleWebKit/537.36, (KHTML, like 壁虎), ,,,Chrome/72.0.3626.121 Safari/537.36“ } def get_first_url (): ,,,list_href =, [] ,,,reaponse =, requests.get (head_url,,头=标题) ,,,soup =, Bs4 (reaponse.text,“lxml") ,,,urls_li =, soup.select (“# mainmenu_top 祝辞,div 祝辞,div 祝辞,ul 祝辞,li") ,,,for url_li 拷贝urls_li: ,,,,,,,urls =, url_li.select (“a") ,,,,,,,for url 拷贝网址: ,,,,,,,,,,,url_href =, url.get (“href") ,,,,,,,,,,,list_href.append (head_url + url_href) ,,,,,,,,,,,out_url =,列表(设置(list_href)) ,,,return out_url def get_next_url (urllist): ,,,url_list =, [] ,,,for url 拷贝urllist: ,,,,,,,response =, requests.get (url,头=标题) null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null nullPython爬虫如何爬取网页中所有的url