成人怡红院-成人怡红院视频在线观看-成人影视大全-成人影院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號
老司机午夜精品99久久免费| 麻豆丰满少妇CHINESE| 久久精品熟女亚洲AV麻豆网站| 久久精品99国产精品蜜桃| 久久无码中文字幕无码| 女狠狠噜天天噜日日噜| 日本动漫爆乳H动漫无遮挡| 天天想你在线视频免费观看高清版| 小SAO货撅起屁股扒开GIF动| 亚洲美女又黄又爽在线观看| 真实国产乱子伦精品一区二区三区 | 久久久久久国产精品MV| 欧美成人一区二区三区不卡| 三个人C了我半小时| 亚洲AV成人片无码网站网一区 | 精品久久久久久久久午夜福利 | 少妇久久久久久人妻无码| 校长办公室岔开腿呻吟| 夜夜躁狠狠躁2021| 啊灬啊灬啊灬快灬高潮了老| 精产国品一二三产品区别在| 国产偷久久久精品专区| 久久久久高潮毛片免费全部播放| 欧美超级乱婬视频播放| 熟妇人交VIDEOS复古| 亚洲AV中文无码字幕色最| 色哟哟精品网站在线观看| 亚洲国产成人精品青青草原| √BT天堂网WWW中文在线| 隔壁人妻被水电工征服| 精品无码成人久久久久久| 男女上下拱试看120秒| 四虎永久在线精品免费无码| 亚洲日韩国产一区二区蜜桃| Y111111国产精品久久久| 国产欧美精品一区二区三区四区 | 日本丰满熟妇BBXBBXHD| 亚洲AV无码成人精品涩涩| 2019在线人妻中文字幕| 国产好大好硬好爽免费不卡| 久久人妻夜夜做天天爽| 色优久久久久综合网鬼色| 亚洲欧美偷国产日韩| 波多野结衣乳喷高潮视频| 交换配乱吟粗大SNS84O| 人妻少妇精品久久久久久| 亚洲AV无码一区二区三区天堂| 99久热RE在线精品99RE| 国产亚洲精久久久久久无码77777| 免费无码AV片在线观看中文| 无码天堂亚洲国产AV久久| 自拍偷自拍亚洲精品情侣| 国产精品-区区久久久狼| 蜜桃av秘 无码一区二区三区 | 国产精品免费久久久久软件| 免费乱码人妻系列无码专区| 无码一区二区三区中文字幕| 99精品国产高清一区二区| 国模小黎大尺度精品(02)[| 热99RE久久精品| 亚洲色婷婷综合开心网| 风流老太婆大BBWBBWHD视| 老熟女高潮一区二区三区| 无人区码一码二码三码四码| 99久久99久久精品国产片果冻| 国产亚洲欧美日韩剧的剧情介绍 | 欧美精品人妻大乳一区二区| 亚洲成A∨人片在线观看不卡| 八戒八戒神马影院在线观看| 久久国产成人午夜AV影院| 天码AV高清毛片在线看_| 69美女ⅩXXXXXXX19| 狠狠色噜噜狠狠狠狠色综合久AV| 日韩国产成人无码AV毛片蜜柚| 一边摸一边抽搐一进一出视频| 国产精品自在在线午夜| 人妻丰满熟妇AⅤ无码| 野花日本免费完整版高清版8| 国产精品国产三级国产AV中文| 女人与牛ZOZO| 亚洲中文字幕在线第六区| 国产精品天干天干在线观看澳门 | 亚洲乱码日产精品BD在线| 妇女强高潮18ⅩXXX| 欧美日韩精品SUV| 一区二区三区国产精品保安| 国产又黄又爽胸又大免费视频| 色狠狠色狠狠综合天天| AA级女人大片喷水视频免费| 久久久久亚洲AV成人网人人| 亚洲AV无码一区二区二三区3p| 国产95在线 | 传媒麻豆有限| 欧美综合自拍亚洲图久青草| 夜夜躁狠狠躁日日躁视频| 好吊妞人成视频在线观看强行| 双腿白浆白丝护士高潮视频| YW尤物爆乳网站点击进入| 免费A级毛片无码免费视频首页| 亚洲乱色熟女一区二区三区麻豆| 国产欧美国产综合每日更新| 少妇下蹲露大唇无遮挡| 波多野结系列18部无码观看A | 无套中出丰满人妻无码| 公车掀起老师裙子进入在线| 日本XXXX18裸体XXXX| FREE俄罗斯免费视频| 妺妺窝人体色WWW看美女图片| 一边摸一边吃奶一边做爽| 久久99精品久久久久免费| 亚洲插肏熟女人妇的屄网址| 国产人澡人澡澡澡人碰视频| 无码办公室丝袜OL中文字幕| 国产A级三级三级三级| 色婷婷日日躁夜夜躁| 成 人 黄 色 网 站 在线播 | 欧美成人激情视频| 1000部啪啪未满十八勿入| 老熟女媾交系列群| 征服丝袜旗袍人妻| 邻居少妇张开双腿让我爽一夜| 亚洲综合激情另类专区| 久久久久精品午夜福利| 亚洲一线产区二线产区区别在| 精品无码国产自产拍在线观看蜜桃| 亚洲AV无码国产在丝袜APP| 国模少妇一区二区三区咪咕| 亚洲AV永久无码精品无码影片| 国产性生大片免费观看性| 亚洲AV永久无码精品九九| 黑人粗大猛烈进出高潮视频| 亚洲国产成人精品青青草原| 久久AV伊人蜜臀一区二区| 一本色道久久综合狠狠躁| 久久亚洲精精品中文字幕| 曰批免费视频播放免费| 免费视频成人片在线观看| 99久久99久久精品免费看蜜桃| 欧美精品99久久久啪啪| 被客人玩得站不起来大前端| 日韩精品无码人成视频手机| 国产99久久久国产精品~~牛 | 国产精品美女一区二区视频| 午夜福利理论片高清在线观看| 国产在线拍揄自揄拍免费下载| 亚洲VA无码手机在线电影| 久久国产精品无码HDAV| 中国老太奶BBW性姣| 欧美熟妇精品视频网免费观看| 草莓丝瓜榴莲绿巨人WWW| 四川丰满少妇A级毛片| 国产沙发午睡系列999| 亚洲精品四区麻豆文化传媒| 久久水蜜桃亚洲AV无码精品麻豆 | 欧美日韩精品久久久免费观看 | 久久亚洲人成网站| ASS亚洲熟妇毛茸茸PICS| 日韩精品人妻系列无码AV东京 | 美女裸体A级毛片| ZOOMSERVO兽狗产品优势| 四川小少妇BBAABBAA| 国产在线精品一区二区中文 | 免费一看一级毛片少妇丰满2| YOUJIZZCOM中国熟妇| 偷拍精品视频一区二区三区| 黑人巨大精品欧美一区二区| 曰韩无码无遮挡A级毛片| 日本成熟…@视频| 国产帅男男GAY网站视频| 亚洲色偷偷色噜噜狠狠99网| 女人两腿扒开图片大全| 嗯~使劲~别停~高H漫画| 亚洲AV无码兔费综| 麻麻让我挺进她的黑森林| 成人A级毛片免费播放| 性色AV一区二区三区天美传媒| 久久精品国产一区二区三| JIZZ成熟丰满韩国女人.| 玩丰满少妇ⅩXX性人妖| 精品无码久久久久久久久久| 97无码免费人妻超级碰碰碰碰| 特级AAAAAAAAA毛片免费视频| 精产国品一二三产品区别在| 99久久国产综合精品麻豆| 无码AV中文字幕久久专区| 久久久久亚洲AV成人网人人软件| 差差漫画网页登录页面弹窗| 亚洲AV中文无码字幕色本草| 哦┅┅快┅┅用力啊┅警花少妇| 国产大屁股喷水视频在线观看| 一本大道无码AV天堂| 色戒2小时38分无删减版| 九九视频麻婆豆腐在线观看| YY4480高清影院播放器| 亚洲AⅤ在线无码播放毛片一线天| 美女露0裸体无档动态视频| 国产白嫩漂亮美女在线观看| 又大又黄又爽视频一区二区| 四虎影视在线观看2413| 老头握住校花的双乳| 国产成人亚洲欧美二区综合|