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

歡迎訪問 生活随笔!

生活随笔

當(dāng)前位置: 首頁 > 编程语言 > python >内容正文

python

python urllib2及beautifulsoup学习

發(fā)布時(shí)間:2025/3/19 python 33 豆豆
生活随笔 收集整理的這篇文章主要介紹了 python urllib2及beautifulsoup学习 小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.

1、python urllib2爬蟲下載網(wǎng)頁的三種方法

#-*-coding:utf-8 -*- import urllib2 import cookieliburl = "http://www.baidu.com" print '第一種方法' response1 = urllib2.urlopen(url) print response1.getcode() print len(response1.read())print "第二種方法" request = urllib2.Request(url) request.add_header("use-agent","Mozilla/5.0") response2 = urllib2.urlopen(request) print response2.getcode() print len(response2.read())print "第三種方法" cj = cookielib.CookieJar() opener = urllib2.build_opener(urllib2.HTTPCookieProcessor(cj)) urllib2.install_opener(opener) response3 = urllib2.urlopen(url) print response3.getcode() print cj print response3.read()

2、python pip安裝beautifulsoup4命令

windows:進(jìn)入Python安裝目錄Scripts文件夾 dir命令查看是否安裝pip 輸入:pip install beautifulsoup4

3、網(wǎng)頁解析器 beautifulsoup語法基礎(chǔ)

#根據(jù)HTML網(wǎng)頁字符串創(chuàng)建BeautifulSoup對象 soup = BeautifulSoup(html_doc, #HTML文檔字符串'html.parser', #HTML解析器from_encoding='utf8' #HTML文檔的編碼)#方法:find_all(name,attrs,string) 查找所有標(biāo)簽為a的節(jié)點(diǎn) soup.find_all('a') #查找所有標(biāo)簽為a,鏈接符合/view/123.htm形式的節(jié)點(diǎn) soup.find_all('a',href='/view/123.htm') #查找所有標(biāo)簽為div class為abc 文字為python的節(jié)點(diǎn) soup.find_all('div',class_='abc',string='Python')#得到節(jié)點(diǎn): <a href='1.html'>Python</a> #獲取查找到的節(jié)點(diǎn)的標(biāo)簽名稱 node.name #獲取查找到的a節(jié)點(diǎn)的href屬性 node['href'] #獲取查找到的a節(jié)點(diǎn)的鏈接文字 node.get_text()

4、網(wǎng)頁解析器 beautifulsoup語法練習(xí)

#-*- coding:utf-8 -*- from bs4 import BeautifulSoup import re html_doc="""百度新聞頁面源碼,篇幅原因源碼不寫進(jìn)來了"""soup = BeautifulSoup(html_doc, 'html.parser',from_encoding='utf-8')print '獲取所有的鏈接' links = soup.find_all('a') for link in links:#print link.name,link['href'],link.get_text()print link.name, link.get('href'), link.get_text()print '獲取http://news.baidu.com的鏈接' link_node = soup.find('a',href='http://qijunjie.baijia.baidu.com/article/799732') print link_node.name, link_node.get('href'), link_node.get_text()print '正則匹配' link_node = soup.find('a',href=re.compile(r"qijunjie")) print link_node.name, link_node.get('href'), link_node.get_text()print '獲取a打開新頁面的鏈接' links= soup.find_all('a',target='_blank') for link in links:print link.name, link.get_text()

5、網(wǎng)絡(luò)爬蟲示例

5.1調(diào)度器 spider_main.py#-*- coding:utf-8 -*- from baike_spider import html_downloader,html_outputer,html_parser,url_managerclass SpiderMain(object):def __init__(self):self.urls = url_manager.UrlManage()self.downloader = html_downloader.HtmlDownloader()self.parser = html_parser.HtmlParser()self.outputer = html_outputer.HtmlOutputer()def craw(self,root_url):self.urls.add_new_url(root_url)count = 1while self.urls.has_new_url():try:new_url = self.urls.get_new_url()print 'craw %d : %s'%(count,new_url)html_cont = self.downloader.download(new_url)new_urls,new_data = self.parser.parse(new_url,html_cont)self.urls.add_new_urls(new_urls)self.outputer.collect_data(new_data)if count == 1000:breakcount = count + 1except:print 'craw failed'self.outputer.output_html()if __name__=="__main__":root_url = "http://baike.baidu.com/item/烏金木?sefr=cr"obj_spider = SpiderMain()obj_spider.craw(root_url) 5.2 url管理器 url_manager.py#-*- coding:utf-8 -*- class UrlManage(object):def __init__(self):self.new_urls = set()self.old_urls = set()def add_new_url(self, url):if url is None:returnif url not in self.new_urls and url not in self.old_urls:self.new_urls.add(url)def has_new_url(self):return len(self.new_urls) != 0def get_new_url(self):new_url = self.new_urls.pop()self.old_urls.add(new_url)return new_urldef add_new_urls(self, urls):if urls is None or len(urls) == 0:returnfor url in urls:self.add_new_url(url) 5.3 下載器 html_downloader.py#-*- coding:utf-8 -*- import urllib2class HtmlDownloader(object):def download(self, url):if url is None:return Noneresponse = urllib2.urlopen(url)if response.getcode() != 200:return Nonereturn response.read() 5.4 解析器 html_parser.py#-*- coding:utf-8 -*- import re import urlparsefrom bs4 import BeautifulSoupclass HtmlParser(object):def parse(self, page_url, html_cont):if page_url is None or html_cont is None:returnsoup = BeautifulSoup(html_cont,'html.parser',from_encoding='utf-8')new_urls = self._get_new_urls(page_url,soup)new_data = self._get_new_data(page_url,soup)return new_urls,new_datadef _get_new_urls(self, page_url, soup):new_urls = set()links = soup.find_all('a',href=re.compile(r"/view/\d+\.htm"))for link in links:new_url = link['href']new_full_url = urlparse.urljoin(page_url,new_url)new_urls.add(new_full_url)return new_urlsdef _get_new_data(self, page_url, soup):res_data = {}res_data['url'] = page_url#<dd class="lemmaWgt-lemmaTitle-title"><h1>烏金木</h1>title_node = soup.find('dd',class_="lemmaWgt-lemmaTitle-title").find("h1")res_data['title'] = title_node.get_text()#<div class="lemma-summary" label-module="lemmaSummary">summary_node = soup.find('div',class_="lemma-summary")res_data['summary'] = summary_node.get_text()return res_data 5.5 輸出器 html_outputer.py #-*- coding:utf-8 -*- class HtmlOutputer(object):def __init__(self):self.datas = []def collect_data(self, data):if data is None:returnself.datas.append(data)def output_html(self):fout = open('out.html','w')fout.write("<html>")fout.write("<head>")fout.write("<meta http-equiv=\"Content-Type\" content=\"text/html; charset=utf-8\" />")fout.write("</head>")fout.write("<body>")fout.write("<table>")for data in self.datas:fout.write("<tr>")fout.write("<td>%s</td>" % data['url'])fout.write("<td>%s</td>" % data['title'].encode('utf-8'))fout.write("<td>%s</td>" % data['summary'].encode('utf-8'))fout.write("</tr>")fout.write("</table>")fout.write("</body>")fout.write("</html>")

總結(jié)

以上是生活随笔為你收集整理的python urllib2及beautifulsoup学习的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網(wǎng)站內(nèi)容還不錯(cuò),歡迎將生活随笔推薦給好友。

主站蜘蛛池模板: 亚洲欧美高清 | www.色图 | 91在线观看视频网站 | 中文有码在线 | 国产片高清在线观看 | 一级视频毛片 | 日夜夜操| 欧美精品一区二区三区蜜臀 | 最近国语视频在线观看免费播放 | 美女隐私黄www网站动漫 | 成年女人毛片 | 波多野结衣女同 | 中文字幕日产av | 超碰免费在线观看 | 26uuu精品一区二区在线观看 | 国产成人精品亚洲精品色欲 | 99热国 | 青青操在线观看 | 久久久久久av无码免费网站 | 国产男女猛烈无遮挡免费观看网站 | 国产三级视频在线 | 香蕉av一区二区三区 | 丰满少妇被猛烈进入无码 | 蜜桃精品成人影片 | 亚洲视频一区二区三区在线观看 | 男人激情网 | 六月丁香婷婷激情 | 亚洲高清二区 | 可以免费看污视频的网站 | 青草视频在线观看视频 | 久久伊人色 | 亚色影库 | 久久久久99精品成人片试看 | 精品女同一区二区 | 波多野结衣中文字幕在线播放 | 福利视频一区二区三区 | av福利在线播放 | 久久er99热精品一区二区 | 99久久久无码国产精品免费麻豆 | 中出视频在线观看 | gai视频在线观看资源 | 欧美激情精品 | 国产精品高潮呻吟视频 | 欧美一级在线免费 | 精品视频一区在线观看 | 人妻熟女一区二区aⅴ水 | 黄色大网站 | 亚洲666| 久久激情综合 | 国产网红女主播精品视频 | 亚洲国产黄色片 | 精品免费囯产一区二区三区 | 秋霞成人 | 欧美日韩在线观看免费 | 免费毛片一区二区三区 | 精品免费| 成人性生交大片免费看中文 | 日韩精品人妻一区二区三区免费 | 亚洲成人av免费在线观看 | 中文字幕第十二页 | 国产一区二区三区自拍 | 任你操精品 | 国产亚洲欧洲 | 8x8x永久免费视频 | 日韩亚洲欧美综合 | 亚洲欧美日韩中文字幕在线观看 | 国产精品7777777 | 熟女高潮一区二区三区 | 国产黄色网 | 青青草伊人网 | 国产aⅴ激情无码久久久无码 | 性欧美久久久 | 国产小视频在线免费观看 | 黄网站在线观 | 人人妻人人澡人人爽人人欧美一区 | 亚洲黄色小说网 | 久久澡 | 欧美私人情侣网站 | 日韩中文字幕av电影 | 亚洲成在线观看 | 欧美一级性 | 美女被草出白浆 | 欧美激情aaa | 香蕉在线观看 | 日韩欧美在线观看一区二区 | 潘金莲激情呻吟欲求不满视频 | 国产青青草视频 | 日韩性大片 | 日韩天堂在线观看 | 51吃瓜网今日吃瓜 | 91秘密入口 | 成人在线一区二区 | 无码一区二区三区免费视频 | 噜噜色成人 | 已满18岁免费观看电视连续剧 | 日本男女网站 | 99亚洲视频| 青青青国产在线 | aaa日韩|