本篇主要介绍爬取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">(.*?)(.*?).*?(.*?)
.*?right">(.*?)'
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">(.*?)'
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">(.*?)'
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()
代码自行拿去用吧!输出文件:
到此结束!需要源码请后台私信小编即可哦!
网友评论