日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

爬虫 下载页面

發布時間:2025/3/11 编程问答 36 豆豆
生活随笔 收集整理的這篇文章主要介紹了 爬虫 下载页面 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

簡介

爬蟲下載頁面

代碼

簡易下載

#!/usr/bin/env python #coding=utf-8 import urllib2def download(url):print('Download:',url)try:html = urllib2.urlopen(url).read()except urllib2.URLError as e:print('Download error:', e.reason)html = Nonereturn htmlif __name__ == '__main__':download('http://www.baidu.com')

似乎并沒有把百度的html 下載下來

多次嘗試下載 5XX服務器錯誤 并設置 代理

很多網站都不喜歡被爬蟲程序訪問,但又沒有辦法完全禁止,于是就設置了一些反爬策略。比如User Agent,中文名為用戶代理,簡稱UA。User Agent存放于Headers中,服務器就是通過查看Headers中的User Agent來判斷是誰在訪問。 通過不同的瀏覽器訪問,會有不同的User Agent,如果爬蟲不設置的話,很容易被識別出來,就會被限制訪問。一般的做法是收集很多不同的User Agent,然后隨機使用。 def download(url, user_agent='wswp', num_retries=2):print 'Downloading:', urlheaders = {'User-agent':user_agent}request = urllib2.Request(url, headers=headers)try:html = urllib2.urlopen(request).read()except urllib2.URLError as e:print('Download error:', e.reason)html = Noneif num_retries > 0:if hasattr(e, 'code') and 500 <= e.code < 600:#retyr 5XX HTTP errorsreturn download(url, user_agent, num_retries-1)return html

使用網站地圖下載相關的頁面

def crawl_sitemap(url):# download the sitemap filesitemap = download(url)# extract the sitemap linkslinks = re.findall('<loc>(.*?)</loc>', sitemap)# download each linkfor link in links:html = download(link)print link

網站可能會把前面的字符串忽略然后可以只用后面的數字

def crawl_string():for page in itertools.count(1):url = 'http://example.webscraping.com/view/-%d' % pagehtml = download(url)if ( html is None):breakelse:pass

網站通過一個頁面的鏈接下載

def get_links(html):webpage_regex = re.compile('<a[^>]+href=["\'](.*?)["\']',re.IGNORECASE)return webpage_regex.findall(html)def link_crawler(seed_url, link_regex):crawl_queue = [seed_url]# keep track which URL's have seen beforeseen = set(crawl_queue)while crawl_queue:url = crawl_queue.pop()html = download(url)print "getlinks", get_links(html)for link in get_links(html):if re.match(link_regex, link):link = urlparse.urljoin(seed_url, link)if link not in seen:seen.add(link)crawl_queue.append(link)if __name__ == '__main__':link_crawler('http://example.webscraping.com', '/places/default/(index|view)')

支持對 robots.txt 的解析

def link_crawler(seed_url, link_regex):rp = robotparser.RobotFileParser()rp.set_url(seed_url+'/robots.txt')rp.read()crawl_queue = [seed_url]# keep track which URL's have seen beforeseen = set(crawl_queue)while crawl_queue:url = crawl_queue.pop()user_agent = 'wswp'if rp.can_fetch(user_agent, url):html = download(url)print "getlinks", get_links(html)for link in get_links(html):if re.match(link_regex, link):link = urlparse.urljoin(seed_url, link)if link not in seen:seen.add(link)crawl_queue.append(link)else:print 'Blocked by robots.txt:', url

代理

def link_crawler(seed_url, link_regex, proxy=False):if proxy: # 暫時無法代理proxy_info={'host':'106.12.38.133','port':22}# We create a handler for the proxyproxy_support = urllib2.ProxyHandler({"http" : "http://%(host)s:%(port)d" % proxy_info})# We create an opener which uses this handler:opener = urllib2.build_opener(proxy_support)# Then we install this opener as the default opener for urllib2:urllib2.install_opener(opener)#如果代理需要驗證proxy_info = { 'host' : '106.12.38.133','port' : 20,'user' : 'root','pass' : 'Woaini7758258!'}proxy_support = urllib2.ProxyHandler({"http" : "http://%(user)s:%(pass)s@%(host)s:%(port)d" % proxy_info})opener = urllib2.build_opener(proxy_support)urllib2.install_opener(opener)#htmlpage = urllib2.urlopen("http://sebsauvage.net/").read(200000)rp = robotparser.RobotFileParser()rp.set_url(seed_url+'/robots.txt')rp.read()crawl_queue = [seed_url]# keep track which URL's have seen beforeseen = set(crawl_queue)while crawl_queue:url = crawl_queue.pop()user_agent = 'wswp'if rp.can_fetch(user_agent, url):html = download(url)print "getlinks", get_links(html)for link in get_links(html):if re.match(link_regex, link):link = urlparse.urljoin(seed_url, link)if link not in seen:seen.add(link)crawl_queue.append(link)else:print 'Blocked by robots.txt:', url

下載限速

class Throttle:"""下載延遲 下載之前調用"""def __init__(self, delay):self.delay = delayself.domains()def wait(self, url):domain = urlparse.urlparse(url).netloclast_accessed = self.domains.get(domain)if self.delay > 0 and last_accessed is not None:sleep_secs = self.delay - (datetime.datetime.now() - last_accessed).secondsif sleep_secs > 0:time.sleep(sleep_secs)self.domains[domain] = datetime.datetime.now()

參考鏈接

https://tieba.baidu.com/p/5832236970

轉載于:https://www.cnblogs.com/eat-too-much/p/11560067.html

創作挑戰賽新人創作獎勵來咯,堅持創作打卡瓜分現金大獎

總結

以上是生活随笔為你收集整理的爬虫 下载页面的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。

主站蜘蛛池模板: 青娱乐欧美 | 一区二区三区www污污污网站 | 在线观看视频国产 | 国产精品日韩欧美 | 99热视| 99国产精品久久久久 | 色爱综合区 | 911国产在线 | 欧美伦理片网站 | 人人插人人 | 天天摸天天 | 日韩va中文 | 8x8ⅹ国产精品一区二区二区 | 欧美日韩在线观看一区 | 日韩免费黄色片 | 狠狠综合久久 | 日韩a级片 | 日韩中文字幕免费在线观看 | 国产精品v亚洲精品v日韩精品 | 亚洲视频在线观看一区 | 国产一级淫 | 久久无码性爱视频 | 男人舔女人下部高潮全视频 | 国产在线观看黄 | 91一区二区三区四区 | 激情综合小说 | 久久久久久久久久综合 | 久久精品国产亚洲7777 | 正在播放久久 | 18禁裸乳无遮挡啪啪无码免费 | 亚洲自拍偷拍区 | 中文天堂在线观看 | 国模私拍视频在线 | 337p粉嫩大胆色噜噜狠狠图片 | 日本一二三区在线 | www.夜夜骑 | 每日av在线 | jizz亚洲女人高潮大叫 | 国产国语老龄妇女a片 | 男女网站在线观看 | www.亚洲天堂 | 亚洲gay视频 | 动漫羞羞 | 91干| 三级免费毛片 | 欧美性猛交xxxx乱大交退制版 | 国产黄在线免费观看 | 亚洲国产精品综合 | www.17c.com喷水少妇 | 欧美精品一区二区久久婷婷 | 日韩成人av网站 | 3d动漫精品啪啪一区二区竹菊 | 亚洲精品97久久中文字幕 | 五月天综合激情网 | 欧美日韩a| 午夜精品一区二区三区三上悠亚 | 日韩国产一区二区 | 奇米影视9999| 国产稀缺精品盗摄盗拍 | 黄色免费视频观看 | 久久无码专区国产精品s | 六月婷婷在线观看 | aaaaa级少妇高潮大片免费看 | 日本成人在线看 | 影音先锋国产 | 免费观看a毛片 | 亚洲国产一二三区 | 丁香花电影高清在线阅读免费 | 在线观看特色大片免费网站 | 欧美乱欲视频 | 日韩久久久久久 | 黄色三级图片 | 欧美日韩你懂的 | 黄色大片免费观看 | 久久久久成人精品无码 | 亚洲精品在线视频观看 | 91九色蝌蚪 | 狼人综合网 | 国产精品久久久久久白浆 | 亚洲免费观看高清完整 | 善良的少妇伦理bd中字 | www.久久久久 | 美女福利在线观看 | 成人av一区 | 人妻射精一区二区 | 久久露脸 | 四虎国产精品免费 | 国产精品网页 | 一区二区三区免费在线视频 | 91视频在线视频 | 国产美女无遮挡永久免费观看 | 亚洲一区二区三区加勒比 | 五十路av在线| 亚洲天堂视频在线播放 | 手机在线免费av | 亚洲精品字幕在线 | 亚洲一区二区视频在线观看 | 可以看黄色的网站 | 小视频在线免费观看 |