《python网络爬虫和信息提取》:全球电影票房排行榜(附更改后的代码)
生活随笔
收集整理的這篇文章主要介紹了
《python网络爬虫和信息提取》:全球电影票房排行榜(附更改后的代码)
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
全球電影票房排行榜也是一個經常被用來講網絡爬蟲的實例。我們同樣用中國大學排名的代碼,修改一下來爬取相應內容。
? ? ? ?打開網頁鏈接:http://www.piaofang.biz/,先來觀察頁面結構:
? ? ?? ? ?下面我們再來分析網頁源代碼:
? ? ? 1、網頁中有"body"和"table"標簽,沒有"tbody"標簽?。
? ? ? 2、有一個包含“排名”、“電影名”等六項內容的表頭的“tr"子標簽。
? ? ? 3、相比第2名,在第1名的子標簽內,第1名前多了“全球電影票房排行榜”幾個字。11名、21名好像也是一樣。
? ? ? 4、阿凡達前也是有一個“a"標簽。
? ? ? 5、 第10名和11名之間有一行空行。
? ? ? 解決思路:
? ? ? 1、對于空行問題。?增加一個if語句,判斷列表長度是否為6。
? ? ? 2、表頭和內容標簽層級數不同,用“ulist.append()”時會出錯,可以用“try-except"語句來解決。
? ? ? 3、第1名及第11名前的“全球電影票房排行榜”,用strip()來解決。
? ? ?修改后的代碼如下:
import requests import bs4 from bs4 import BeautifulSoupdef getHTML_Text(url):try:kv = {'User-Agent':'Mozilla/5.0'}r = requests.get(url,timeout = 20 ,headers = kv)r.raise_for_status()# print('是否=200',r.status_code) #如果狀態不是200,則產生網絡訪問異常r.encoding = r.apparent_encoding# print(r.request.headers) # 如不能正常訪問網絡,可參考其中內容修改kv中的信息。return r.textexcept:return '網絡打開異常!'def fillList(ulist,html):soup = BeautifulSoup(html,'html.parser')for tr in soup.find('table').children: # 網頁上沒有‘tbody’標簽,用‘body’也不能成功。if isinstance(tr,bs4.element.Tag):tds = tr('td')# print('tds=', tds)if len(tds)>=6: # 去掉空列表,以防出錯“list index out of range”try:ulist.append([tds[0].text.strip('全球電影票房排行榜'),tds[1]('a')[0].string,tds[2].string,tds[3].string,tds[4].string,tds[5].text])# strip('全球電影票房排行榜')用于刪除第一名的前綴,用text代替string,防止下行出現“unsupported format string passed to NoneType.__format__”except:ulist.append([tds[0].string, tds[1].string, tds[2].string, tds[3].string, tds[4].string,tds[5].string]) # 提取標題else:pass# print(ulist)def print_all_result(ulist,num):tplt = "{0:>6}\t{1:{6}^18}\t\t{2:^6}\t{3:{6}^6}\t{4:{6}^16}\t{5:{6}>8}"for i in range(num):u = ulist[i]print(tplt.format(u[0].strip(),u[1].strip(),u[2].strip(),u[3].strip(),u[4].strip(),u[5].strip(),chr(12288)))def main():url = 'http://www.piaofang.biz/'html = getHTML_Text(url)result = []fillList(result,html)print_all_result(result,21)if __name__ == '__main__':main()運行結果如下:
?
總結
以上是生活随笔為你收集整理的《python网络爬虫和信息提取》:全球电影票房排行榜(附更改后的代码)的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 【UC浏览器】PPC/SP平台7.0正式
- 下一篇: 毕设/私活/bigold必备项目,一个挣