成人怡红院-成人怡红院视频在线观看-成人影视大全-成人影院203nnxyz-美女毛片在线看-美女免费黄

站長資訊網
最全最豐富的資訊網站

python網絡爬蟲步驟是什么

python網絡爬蟲步驟:首先準備所需庫,編寫爬蟲調度程序;然后編寫url管理器,并編寫網頁下載器;接著編寫網頁解析器;最后編寫網頁輸出器即可。

python網絡爬蟲步驟是什么

本教程操作環境:windows7系統、python3.9版,DELL G3電腦。

python網絡爬蟲步驟

(1)準備所需庫

我們需要準備一款名為BeautifulSoup(網頁解析)的開源庫,用于對下載的網頁進行解析,我們是用的是PyCharm編譯環境所以可以直接下載該開源庫。

步驟如下:

選擇File->Settings

python網絡爬蟲步驟是什么

打開Project:PythonProject下的Project interpreter

python網絡爬蟲步驟是什么

點擊加號添加新的庫

python網絡爬蟲步驟是什么

輸入bs4選擇bs4點擊Install Packge進行下載

python網絡爬蟲步驟是什么

(2)編寫爬蟲調度程序

這里的bike_spider是項目名稱引入的四個類分別對應下面的四段代碼url管理器,url下載器,url解析器,url輸出器。

# 爬蟲調度程序 from bike_spider import url_manager, html_downloader, html_parser, html_outputer   # 爬蟲初始化 class SpiderMain(object):     def __init__(self):         self.urls = url_manager.UrlManager()         self.downloader = html_downloader.HtmlDownloader()         self.parser = html_parser.HtmlParser()         self.outputer = html_outputer.HtmlOutputer()      def craw(self, my_root_url):         count = 1         self.urls.add_new_url(my_root_url)         while 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 == 10:                     break                 count += 1             except:                 print("craw failed")          self.outputer.output_html()   if __name__ == "__main__":     root_url = "http://baike.baidu.com/item/Python/407313"     obj_spider = SpiderMain()     obj_spider.craw(root_url)

(3)編寫url管理器

我們把已經爬取過的url和未爬取的url分開存放以便我們不會重復爬取某些已經爬取過的網頁。

# url管理器 class UrlManager(object):     def __init__(self):         self.new_urls = set()         self.old_urls = set()      def add_new_url(self, url):         if url is None:             return         if url not in self.new_urls and url not in self.old_urls:             self.new_urls.add(url)      def add_new_urls(self, urls):         if urls is None or len(urls) == 0:             return         for url in urls:             self.new_urls.add(url)      def get_new_url(self):         # pop方法會幫我們獲取一個url并且移除它         new_url = self.new_urls.pop()         self.old_urls.add(new_url)         return new_url      def has_new_url(self):         return len(self.new_urls) != 0

(4)編寫網頁下載器

通過網絡請求來下載頁面

# 網頁下載器 import urllib.request   class HtmlDownloader(object):      def download(self, url):         if url is None:             return None         response = urllib.request.urlopen(url)         # code不為200則請求失敗         if response.getcode() != 200:             return None         return response.read()

(5)編寫網頁解析器

對網頁進行解析時我們需要知道我們要查詢的內容都有哪些特征,我們可以打開一個網頁點擊右鍵審查元素來了解我們所查內容的共同之處。

# 網頁解析器 import re from bs4 import BeautifulSoup from urllib.parse import urljoin   class HtmlParser(object):      def parse(self, page_url, html_cont):         if page_url is None or html_cont is None:             return         soup = 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_data      def _get_new_data(self, page_url, soup):         res_data = {"url": page_url}         # 獲取標題         title_node = soup.find("dd", class_="lemmaWgt-lemmaTitle-title").find("h1")         res_data["title"] = title_node.get_text()         summary_node = soup.find("p", class_="lemma-summary")         res_data["summary"] = summary_node.get_text()         return res_data      def _get_new_urls(self, page_url, soup):         new_urls = set()         # 查找出所有符合下列條件的url         links = soup.find_all("a", href=re.compile(r"/item/"))         for link in links:             new_url = link['href']             # 獲取到的url不完整,學要拼接             new_full_url = urljoin(page_url, new_url)             new_urls.add(new_full_url)         return new_urls

(6)編寫網頁輸出器

輸出的格式有很多種,我們選擇以html的形式輸出,這樣我們可以的到一個html頁面。

# 網頁輸出器 class HtmlOutputer(object):      def __init__(self):         self.datas = []      def collect_data(self, data):         if data is None:             return         self.datas.append(data)      # 我們以html表格形式進行輸出     def output_html(self):         fout = open("output.html", "w", encoding='utf-8')         fout.write("<html>")         fout.write("<meta charset='utf-8'>")         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"])             fout.write("<td>%s</td>" % data["summary"])             fout.write("</tr>")         fout.write("</table>")         fout.write("</body>")         fout.write("</html>")         # 輸出完畢后一定要關閉輸出器         fout.close()

相關免費學習推薦:python視頻教程

贊(0)
分享到: 更多 (0)
?
網站地圖   滬ICP備18035694號-2    滬公網安備31011702889846號
欧美激情一区二区三区蜜桃| 男朋友一晚弄了我5次正常吗| 久久久久人妻精品区一三寸| 久久精品无码AV| 男女后进式猛烈XX00动态图片| 欧美最爽的乱婬视频婬色视频| 日本亚洲色大成网站WWW久久| 天美传媒MV在线看免费| 亚洲AV蜜乳永久www| 野花大全在线观看免费高清| 3分19秒砍人手脚血腥场面| 成 人 黄 色 网 站 视 频| 国产精品国产三级国产AV浪潮 | 奇米综合四色77777久久| 色综合久久久久久久久五月 | 色婷婷狠狠久久综合五月| 无码字幕AV一区二区三区| 亚洲精品无码一区二区AⅤ污美国| 中文乱码35页在线观看| 成人AV在线播放| 国产偷国产偷亚洲高清日韩| 久久久久亚洲波多野结衣| 欧美性战A久久久久久| 玩弄丰满人妻大BBWBBW| 亚洲色精品VR一区二区三区| 99精品国产成人综合| 国产SUV精二区九色| 九月在线 视频 在线观看| 欧美熟女一区二区三区| 无码抽搐高潮喷水流白浆| 亚洲一区二区三区波多野结衣 | 欧美无遮挡很黄裸交视频| 天天躁日日躁狠狠躁性色AVQ| 亚洲精品无码专区久久| CHINESE性老妇老女人| 国产精品亚洲А∨天堂免下载| 久久天天躁狠狠躁夜夜AV不卡| 人妻欲求不满中文字幕在线| 亚洲AV成人噜噜无码网站 | 亚洲成AV人片一区二区| 99热这里只有精品免费播放| 国产精品一区二区香蕉| 免费的视频BGM大全软件下载| 色欲蜜桃AV无码中文字幕| 亚洲欧美一区二区成人片牛牛| M豆传媒有限公司观看| 国产在线国偷精品免费看 | 久久精品AⅤ无码中文字字幕蜜桃 久久精品AⅤ无码中文字字幕 | 免费一对一刺激互动聊天软件| 天天做天天爱夜夜爽毛片毛片| 野花日本大全免费观看3中文版5 | 再灬再灬再灬深一点舒服| 成人免费毛片内射美女-百度 | 亚洲精品欧美精品日韩精品| 暗交小拗女一区二区三区| 狠狠五月激情六月丁香| 人人妻人人澡人人爽精品日本 | ASS鲜嫩鲜嫩PICS日本| 国产中文成人精品久久久| 欧美交换配乱吟粗大视频| 亚洲AV成人精品日韩一区麻豆| A级黑粗大硬长爽 猛视频,| 和岳每晚弄的高潮嗷嗷叫视频| 人妻夜夜爽天天爽| 亚洲熟妇丰满美女XXXXX| 国产AⅤ激情无码久久久无码| 久久综合给合久久狠狠狠97色6 | 国产在线无码一区二区三区 | 久热爱精品视频线路一| 无码AV一区二区三区无码| BT天堂新版中文在线地址| 娇喘潮喷抽搐高潮在线视频 | 欧美妆和日韩妆区别777CCC| 亚洲欧洲精品成人久久曰影片| 公的粗大挺进了我的密道视频| 免费看含羞草AV片成人网址| 亚洲成A人片在线观看天堂| 大肥女BBWBBWHD视频| 免费高清中文字幕MV| 亚洲爆乳精品无码一区二区| 非洲妓女BBWBBWW| 欧美激情国产精品视频一区| 亚洲另类精品无码专区| 国产精品VA在线播放我和闺蜜| 欧美与黑人午夜性猛交久久久| 亚洲欲色欲WWW怡红院| 国产色母和进口色母区别| 色老头BGMBGMBGM| 97夜夜澡人人爽人人喊中国片| 精品无人区一区二区三区在线 | 2021国产麻豆剧传媒在线| 精品久久亚洲中文无码| 无码少妇一区二区| 丁香狠狠色婷婷久久综合| 女人和拘做受全过程| 夜夜未满十八勿进的爽爽影院| 国产强被迫伦姧在线观看无码 | 日韩人妻无码免费视频一区二区三区| 又小又紧女MAGNET| 精品无码中文字幕在线| 亚洲AVAV黄网站| 国产成人综合久久精品推最新| 日韩激情无码不卡码| CHINESE老熟妇老女人HD| 久久中文字幕无码一区二区| 亚洲色偷偷偷综合网| 激情五月综合 香亚洲| 亚洲AV成人无码精品直播在线 | 亚洲AV成人无码网站不卡| 国产精品成人嫩草影院| 色偷一区国产精品| 成AV人电影在线观看| 青青青国产手线观看视频2019| 337P西西人体大胆瓣开下部 | 九九久久99综合一区二区| 亚洲AV永久无码精品无码流畅| 国产麻豆 9L 精品三级站| 头埋入双腿之间被吸到高潮| 疯狂做爰XXXⅩ高潮69短| 色狠狠AV老熟女| 吃瓜爆料网不打烊| 日本强伦姧人妻一区二区| 爸爸10岁幼儿TREE小学生| 人妻熟妇乱又伦精品视频无广告 | 国产精品无圣光一区二区| 四虎成人精品无码| 国产精品成人一区二区三区| 无码精品人妻一区二区三区网站 | 亚洲AV永久无码天堂网| 国内精品伊人久久久久AV影院| 亚洲AV成人无码精品| 国产一本一道久久香蕉| 亚洲AV无码XXX麻豆艾秋| 黑人粗大猛烈进出高潮视频| 亚洲精品9999久久久久无码| 精品综合久久久久久97| 亚洲午夜久久久久妓女影院| 久久久久久久精品免费| 在线A级毛片免费视频| 妺妺窝人体色WWW国产馆在线| 999国内精品永久免费观看| 漂亮人妻被黑人久久精品| 差差差无掩盖视频30分钟| 色欲aⅴ精品一区二区三区浪潮| 丰满人妻无码AⅤ一区二区| 玩弄人妻热妇性色Av少妇| 国产美女精品AⅤ在线| 亚洲AV乱码一区二区三区按摩| 精品国产AⅤ一区天美传媒| 亚洲永久精品wW4791一区| 蜜臀色欲AV在线播放国产日韩| 9色国产深夜内射| 日韩AV无码中文字幕| 国产成人无码综合亚洲日韩| 亚洲AV成人精品日韩一区| 久久精品国产精品国产一区 | 国产AV无码精品色午夜| 亚洲A∨精品一区二区三区| 精品亚洲一区二区三区在线观看| 伊人色综合视频一区二区三区| 欧美成人高清AⅤ免费观看| 吃瓜爆料网不打烊| 校花高潮抽搐冒白浆| 久久久久99精品成人片| BGMBGMBGM老太太交70| 熟女无套高潮内谢吼叫免费| 国自产拍亚洲免费视频| 亚洲一区二区精品无码色欲Av | 我和公发生了性关系视频| 精品 日韩 国产 欧美 视频 | 免费无遮挡色视频网站| 把插八插露脸对白内射| 铜铜铜铜铜铜铜铜好大免费| 精品久久久无码人妻中文字幕 | 亚洲日韩亚洲另类激情文学 | 久久人人爽人人人人爽AV| YY8840私人影院的在线| 无码被窝影院午夜看片爽爽JK| 精品一区二区AV天堂| AV人摸人人人澡人人超碰小说| 四虎WWW成人影院观看| 精品麻豆一卡2卡三卡4卡乱码| 97在线视频免费观看| 无码精品人妻一区二区三区人妻斩 | 午夜精品一区二区三区免费视频| 久久亚洲精品无码AⅤ电影| 成人片黄网站A毛片免费| 亚洲AV永久无码精品久久麻豆 | 杂乱小说2第400部| 四十路の五十路熟女豊満AV| 欧美 日韩 国产 成人 在线观看| 狠狠做五月深爱婷婷| 国产亚洲AV☆浪潮在线观看| 纯净模式怎么关闭| 亚洲人妻在线视频| 欧美性猛交XXXX免费看蜜桃| 国产精品亚洲А∨天堂2018| 在厨房抱住岳丰满大屁股韩国电影| 色婷婷久久久SWAG精品| 久久精品无码一区二区三区不卡 |