我是初學者,代碼不好的地方,歡迎大神們修改,優化。獻上原始碼下圖。如果把(730906,731286)這個范圍放大,就發現會報錯,因為有些網頁找不到以上抓取的內容,怎么才能跳過這些沒有包含需要內容的網頁,執行下一次回圈。
import requests
import csv
from bs4 import BeautifulSoup
from selenium import webdriver
url_part='http://odds.500.com/fenxi/yazhi'
headers = {"User-Agent": "Mozilla/5.0 (Windows NT 6.3; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/59.0.3071.86 Safari/537.36"}
bt=["比賽時間","第幾輪","主隊","比分","客隊","澳門亞盤初始賠率","澳門亞盤即時賠率"]
with open("d:/python/football/goods.csv",'w',newline='') as t:
writer=csv.writer(t)
writer.writerow(bt)#寫入標簽,橫行
for i in range(730906,731286):
url = url_part + '-' + str(i) + '.shtml'
html = requests.get(url,headers=headers).content.decode('gbk','ignore')
soup = BeautifulSoup(html,'lxml')
bssja = soup.find('p',attrs={'class':'game_time'}).text #得到比賽時間bssj
bssj =bssja[4:] #得到比賽時間bssj
bsdw = soup.findAll('a',attrs={'class':'hd_name'}) #得到比賽隊伍
bszd = bsdw[0].text #得到比賽主隊名字
djl = bsdw[1].text.replace("space","").replace("\n", "") #得到比賽是第幾輪
bskd = bsdw[2].text #得到比賽客隊名字
bf = soup.find('p',attrs={'class':'odds_hd_bf'}).text #得到兩隊比分
am_pkdm = soup.find('tr',id='5').findAll('tbody') #得到澳門盤口亞盤代碼
am_pkjs = am_pkdm[0].text.replace("space","").replace("\n", "") #得到澳門即時賠率
am_pkcs = am_pkdm[1].text.replace("space","").replace("\n", "") #得到澳門初始賠率
sj=[bssj,djl,bszd,bf,bskd,am_pkcs,am_pkjs]
with open("d:/python/football/goods.csv",'a',newline='') as t:#numline是來控制空的行數的
writer=csv.writer(t)
writer.writerow(sj)#寫入標簽,橫行
uj5u.com熱心網友回復:
使用爬蟲使用例外處理是必不可少的,如果抓取到內容不存在的網頁,會拋出例外,你只需要捕獲這個例外,跳過本次回圈就可以了,你可以百度一下Python的例外處理機制uj5u.com熱心網友回復:
你好,這個怎么捕獲這個例外跳出這個回圈呀轉載請註明出處,本文鏈接:https://www.uj5u.com/qita/236216.html
