更新時(shí)間:2023-03-10 來源:黑馬程序員 瀏覽量:
Python自帶的urllib和urllib2,也可以使用requests這種第三方庫,或者Scrapy框架。
urllib和urllib2模塊都可以做與請求URL相關(guān)的操作,但它們提供了不同的功能。
urllib2.urlopen可以接收一個(gè)Request對象或者URL(在接受Request對象的時(shí)候,并以此可以來設(shè)置一個(gè)URL的headers),urllib.urlopen只接收一個(gè)URL。
由于urllib有urlencode方法可以將字符串以URL進(jìn)行編碼,但是urllib2沒有,urllib和urllib2經(jīng)常會一起使用。urllib2可以接收一個(gè)Request類的實(shí)例來設(shè)置URL請求的headers,urlib僅可以接受URL。
request是一個(gè)HTTP庫,它可以用來對HTTP進(jìn)行請求,是一個(gè)強(qiáng)大的庫,但是下載和解析部分需要自己處理,靈活性高,高并發(fā)與分布式部署也非常靈活,對于功能可以更好實(shí)現(xiàn)。
Scrapy是一個(gè)封裝起來的框架,它包含了下載器、解析器、日志及異常處理,基于多線程,Scrapy基于多線程和Twisted的方式處理,對于固定單個(gè)網(wǎng)站的爬取開發(fā)有優(yōu)勢,但是對于多網(wǎng)站爬取,在并發(fā)及分布式處理方面,顯得不夠靈活。