爬取菜鳥教程Python100例

2021-09-29 12:52:55 字數 1973 閱讀 8790

爬取解析菜鳥教程python100例頁面,得到所有例子的題目、程式分析和**,並存入txt檔案。

#_*_ coding:utf8 _*_

import requests

from bs4 import beautifulsoup

# 1、獲取鏈結,解析鏈結

url =

''headers =

# 從自己的瀏覽器獲得,requests請求時模擬瀏覽器發起請求

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

.content.decode(

'utf-8'

)soup = beautifulsoup(html,

'lxml'

)# 解析鏈結

soup.prettify(

)# 2、獲取每個練習題的鏈結位址並且得到每個練習題的題目、程式分析和**

alink = soup.find(id=

'content'

).find_all(

'a')

with

open

('python-100.txt'

,'w'

, encoding=

'utf-8'

)as py100:

for i in alink:

dic =

relink =

''+str

(i.attrs[

'href'])

link = requests.get(relink, headers=headers)

.content.decode(

'utf-8'

) bs = beautifulsoup(link,

'lxml'

)# 獲取標題

#dic['title'] = bs.find(id='content').h1.text

dic[

'title'

]= bs.select(

'#content h1')[

0].get_text(

)# 獲取練習題題目內容

#dic['question'] = bs.find(id='content').find_all('p')[1].text

dic[

'question'

]= bs.select(

'#content p')[

1].get_text(

)# 獲取程式分析的內容

#dic['analysis'] = bs.find(id='content').find_all('p')[2].text

dic[

'analysis'

]= bs.select(

'#content p')[

2].text

# 獲取**,**的存放有兩種形式,一種儲存在div中,一種儲存在pre中

try:

dic[

'code'

]= bs.find(id=

'content'

).find(class_ =

'example_code'

).text

except exception as e:

dic[

'code'

]= bs.find(

'pre'

).text

py100.write(dic[

'title']+

'\n'

) py100.write(dic[

'question']+

'\n'

) py100.write(dic[

'analysis']+

'\n'

) py100.write(dic[

'code']+

'\n'

)

菜鳥教程 Python 100例

本部落格列出具體題目及其 github位址 1,題目 有四個數字 1 2 3 4,能組成多少個互不相同且無重複數字的三位數?各是多少?2,題目 企業發放的獎金根據利潤提成。利潤 i 低於或等於10萬元時,獎金可提10 利潤高於10萬元,低於20萬元時,低於10萬元的部分按10 提成,高於10萬元的部...

菜鳥教程Python100例 筆記

練習例項74 元組強制轉為list列表 練習例項76 函式名做引數傳遞 usr bin python print hello,world a 123 b 456 stra abc strb def strc a,b,c strd d e f stre abc def ghi strf gkl mno...

菜鳥教程python 100練習1(1 20)

1.題目 有四個數字 1 2 3 4,能組成多少個互不相同且無重複數字的三位數?各是多少?程式分析 可填在百位 十位 個位的數字都是1 2 3 4。組成所有的排列後再去 掉不滿足條件的排列。lit tar 1,2,3,4 for i in tar a tar.copy a.remove i for ...