我用Python把雙色球的網站“黑”了!下個1.5億大獎會是我嗎?
阿新 • • 發佈:2018-11-21
本篇主要介紹爬取500彩票網,獲取所有雙色球的開獎結果,寫入到csv檔案。
(1) 分析標題
通過分析,發現標題資訊在如下地方顯示:
進群:548377875 即可獲取小編精心準備的資料呢!如有需要原始碼請單獨私信!
(2) 分析開獎號碼
通過分析,發現開獎號碼在如下地方顯示:
(3) 分析往期開獎結果url
通過分析,發現網頁是通過一個下拉選單,選擇相應的期號,會自動跳轉對應的網站。
網站規律就是http://kaijiang.500.com/shtml/ssq/+"期號"+.shtml
2、思路分析
先提取網頁資料,用Beautiful Soup從網頁抓取資料,然後通過正則表示式,提取想要的資料。
3、程式碼:
import requests from bs4 import BeautifulSoup import re #獲取網頁資料,偽裝成瀏覽器 def gethtml(url): headers = { "Use-Agent": "Mozilla/5.0 (Windows NT 6.1; Win64; x64) Apple WebKit/537.36 (KHTML, like Gecko) Chrome/70.0.3538.77 Safari/537.36" } req = requests.get(url,headers = headers) req.encoding = "GBK" html = req.text bf = BeautifulSoup(html, "html.parser") return bf #爬取標題 def gettitle(html): titlehtml = html.find_all("td", class_="td_title01") titletxt = str(titlehtml).strip() p1 = r'shtml">(.*?)<f.*?<strong>(.*?)</strong>.*?</font>(.*?)</a> .*?right">(.*?)</span>' titles = re.compile(p1, re.S).findall(titletxt) qi = list(titles[0]) qi[2] = ('期') return ''.join(qi) #爬取紅色球 def getred(html): redhtml = html.find_all("li", class_="ball_red") redtxt = str(redhtml).strip() p1 = r'red">(.*?)</li>' reds = re.compile(p1, re.S).findall(redtxt) return '紅球:' + ' '.join(reds) #爬取藍色球 def getbule(html): bulehtml = html.find_all("li", class_="ball_blue") buletxt = str(bulehtml).strip() p1 = r'blue">(.*?)</li>' bules = re.compile(p1, re.S).findall(buletxt) return '藍球:' + ' '.join(bules) #獲取所有url def getlistnum(html): listnumhtml = html.find_all("span", class_="iSelectBox") p1 = r'href="(.*?)">' listnums = re.compile(p1, re.S).findall(str(listnumhtml)) return listnums[1:] url = 'http://kaijiang.500.com/shtml/ssq/18131.shtml' def main(): html = gethtml(url) htmlurls = getlistnum(html) for htmlurl in htmlurls: ssqhtml = gethtml(htmlurl) a = gettitle(ssqhtml) b = getred(ssqhtml) c = getbule(ssqhtml) #寫入txt檔案 with open(r'D:.txt','a') as f: print(htmlurl) f.write(a + ' '+ b + ' '+ c + ' ') f.close() if __name__ == "__main__": main()
程式碼自行拿去用吧!輸出檔案:
到此結束!需要原始碼請後臺私信小編即可哦!