第七色在线视频,2021少妇久久久久久久久久,亚洲欧洲精品成人久久av18,亚洲国产精品特色大片观看完整版,孙宇晨将参加特朗普的晚宴

為了賬號安全,請及時綁定郵箱和手機立即綁定

Python 3的代碼 自己改了一點,新網(wǎng)站,希望有用

第一部分

from?baike_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,root_url):
????????count?=?1
????????self.urls.add_new_url(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?==?1000:
????????????????????break

????????????????count?=?count?+?1

????????????except:
????????????????print("craw?failed")

????????self.outputer.output_html()



if?__name__=="__main__":
????root_url?=?"https://baike.baidu.com/item/python/407313"
????obj_spider?=?SpiderMain()
????obj_spider.craw(root_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.add_new_url(url)


????def?has_new_url(self):
????????return?len(self.new_urls)?!=?0


????def?get_new_url(self):
????????new_url?=?self.new_urls.pop()
????????self.old_urls.add(new_url)
????????return?new_url
?
?
?
?
?
?第三部分
?
?
?

from?bs4?import?BeautifulSoup

import?urllib

import?re

class?HtmlParser(object):

????def?_get_new_urls(self,page_url,?soup):
????????new_urls?=?set()
????????links?=?soup.find_all('a',href=re.compile(r"/item/Python/\d+"))
????????for?link?in?links:
????????????new_url?=?link['href']
????????????new_full_url?=?urllib.parse.urljoin(page_url,new_url)
????????????new_urls.add(new_full_url)
????????return?new_urls


????def?_get_new_data(self,?page_url,?soup):
????????res_data?=?{}

????????#url
????????res_data['url']?=?page_url

????#<dd?class="lemmaWgt-lemmaTitle-title"><h1>Python</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


????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
????????
????????
????????
第四部分





import?urllib.request


class?HtmlDownloader(object):
????def?download(self,?url):
????????if?url?is?None:
????????????return?None

????????response?=?urllib.request.urlopen(url)

????????if?response.getcode()?!=?200:
????????????return?None
????????return?response.read()
????????
????????
第五部分


import?self
class?HtmlOutputer(object):
????def?__init__(self):
????????self.datas?=?[]
????def?collect_data(self,?data):
???????if?data?is?None:
???????????return
???????self.datas.append(data)

????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>")


正在回答

5 回答

正則表達式需要改改

0 回復 有任何疑惑可以回復我~

html_cont = 不出內(nèi)容

0 回復 有任何疑惑可以回復我~

craw 1 : https://baike.baidu.com/item/Python/407313

craw failed

運行完就這樣了,我之前也是這樣寫的代碼,沒有迭代,直接出結(jié)果,請問你找到原因沒?

0 回復 有任何疑惑可以回復我~
#1

Bukrs

把第三部分的 import urllib 改成 import urllib.parse
2019-04-12 回復 有任何疑惑可以回復我~
#2

丶明燈三千

我發(fā)現(xiàn)UrlManger沒有收集到任何東西,所以直接craw failed,請問大佬解決這個問題了嗎?
2019-04-16 回復 有任何疑惑可以回復我~
#3

開灰機的松鼠

同樣的問題吖~怎么改都是運行一個,然后就failed了。最后寫出的網(wǎng)頁信息里面就三個標簽,其他內(nèi)容什么都沒有。 = =!
2019-04-26 回復 有任何疑惑可以回復我~
#4

Authorcai

1.第21行 new_url 改為 ‘https://baike.baidu.com’ 2.第92行 正則表達式可以修改為 links = soup.find_all('a',href=re.compile(r"/item/%*"))
2019-08-05 回復 有任何疑惑可以回復我~
查看1條回復

這個代碼存在一定的缺陷,請注意

0 回復 有任何疑惑可以回復我~
#1

QAQ413227

第三部分最后是沒有打完嗎
2019-04-25 回復 有任何疑惑可以回復我~
#2

QAQ413227

不好意思我看錯了
2019-04-25 回復 有任何疑惑可以回復我~

使用的IDE是PYCHARM

0 回復 有任何疑惑可以回復我~

舉報

0/150
提交
取消
Python開發(fā)簡單爬蟲
  • 參與學習       227603    人
  • 解答問題       1282    個

本教程帶您解開python爬蟲這門神奇技術(shù)的面紗

進入課程

Python 3的代碼 自己改了一點,新網(wǎng)站,希望有用

我要回答 關(guān)注問題
微信客服

購課補貼
聯(lián)系客服咨詢優(yōu)惠詳情

幫助反饋 APP下載

慕課網(wǎng)APP
您的移動學習伙伴

公眾號

掃描二維碼
關(guān)注慕課網(wǎng)微信公眾號