乙個簡單的百度爬蟲例項

2021-10-14 17:21:23 字數 2725 閱讀 8220

import requests

from bs4 import beautifulsoup

import json

import datetime

defgethtml

(url)

: headers =

try:

r = requests.get(url, headers=headers)

r.raise_for_status

return r.text

except

:print

('爬取失敗'

)return

''def

getinfo

(infolist, html)

: soup = beautifulsoup(html,

'lxml'

)for tables in soup.find_all(

'table'):

pre_table_title = tables.find_previous(

'div'

).find_all(

'h3'

)for pre_title in pre_table_title:

if'參賽學員'

in pre_title:

defdealinfo

(infolist)

:"""

解析目標html處的選手資訊

:param infolist:

:return:

"""bs = beautifulsoup(

str(infolist)

,'lxml'

) all_trs = bs.find_all(

'tr'

) all_starts =

for tr in all_trs[1:

]:star =

all_tds = tr.find_all(

'td'

)# 姓名

star[

'name'

]= all_tds[0]

.text

star[

'link']=

''+ all_tds[0]

.find(

'a')

.get(

'href'

) star[

'area'

]= all_tds[1]

.text

star[

'constellation'

]= all_tds[2]

.text

star[

'flower_word'

]= all_tds[3]

.text

# 公司處理

ifnot all_tds[4]

.find(

'a')

isnone

: star[

'company'

]= all_tds[4]

.find(

'a')

.text

else

: star[

'company'

]= all_tds[4]

.text

return all_starts

deftransjson

(path, filename, infomation)

:# 化成json格式

json_data = json.dumps(infomation, sort_keys=

false

, indent=

4, separators=

(','

,':'))

print

(json_data)

with

open

(path + filename +

'.json'

,'w'

, encoding=

'utf-8'

)as f:

json.dump(json_data, f, ensure_ascii=

false

)if __name__ ==

'__main__'

: url =

'/item/青春有你第二季'

html = gethtml(url)

infolist =

getinfo(infolist, html)

infomation = dealinfo(infolist)

print

('共%d位選手。'

%len

(infomation)

)for info in infomation:

print

(info)

# 獲取當天的日期,並進行格式化,用於後面檔案命名,格式:20200420

today = datetime.date.today(

).strftime(

'%y%m%d'

) path =

'' filename = today

# transjson(path, filename, infomation)

輸出結果是:

共109位選手。

process finished with exit code 0

乙個簡單的爬蟲例項

獲取網頁html文字內容 usr bin python coding utf 8 import urllib import re 根據url獲取網頁html內容 defgethtmlcontent url page urllib.urlopen url return page.read 從html中...

乙個百度一樣的分頁

pager pagees pager request.getattribute page int pn pagees.getnowpager 當前頁 int pt pagees.gettotalpage 總頁數 int shownum 5 所顯示 if pagees.getnowpager 1 if...

乙個前百度工程師看百度的狼性

戰略 在李彥巨集的那封信裡談到了移動搜尋的戰略,也談到了危機,可惜沒有文章提到過危機是怎麼產生的。記得三年前,還是2009年,還是華為的那位神童李一男做cto,我作為一名底層的在做移動搜尋的工程師有幸能和他有過大致如下的對話 最近蘋果的iphone和安卓的手機勢頭很猛,不知道公司有沒有在這方面的行動...