我正在尝试搜索网站(www.cashpoint.dk)以获取赔率和其他相关信息。
如果我想提取输出,有人可以帮助我做什么 打印((下注['team1'],下注['team2'],下注['bettext'],下注['tiptext'],下注['tip']))到.json文件,包含所有赔率和文字?
我希望这个结构对你有意义,如果代码看起来很糟糕我很抱歉,我是python和编码的新手。
import demjson
import json
import io
import re
from bs4 import BeautifulSoup
import requests
url = "https://www.cashpoint.dk/en/?r=bets/xtra&group=461392&game=312004790"
print(url)
r = requests.get(url)
soup = BeautifulSoup(r.text, 'lxml')
class Scraper():
def __init__(self):
self.tables = soup.select('table.sportbet_extra_list_table')
for table in self.tables:
self.fields = table.select('.sportbet_extra_rate_content')
for field in self.fields:
self.js_obj = re.search('{.+}', field['onclick']).group()
self.bet = demjson.decode(self.js_obj)
print((self.bet['team1'], self.bet['team2'], self.bet['bettext'], self.bet['tiptext'], self.bet['tip']))
def parseJSON(self):
try:
self.to_unicode = unicode
except NameError:
self.to_unicode = str
# Define data
self.data = {
'dictionary:': {
'tip': str(self.bet['tip']),
'team1': str(self.bet['team1']),
'team2': str(self.bet['team2']),
'bettext': str(self.bet['bettext']),
'odds': str(self.bet['odd']),
}
}
# Write JSON file
with io.open('data.json', 'w', encoding='utf8') as outfile:
self.str_ = json.dumps(self.data,
indent=4, sort_keys=True,
separators=(',', ': '), ensure_ascii=True)
outfile.write(self.to_unicode(self.str_))
# Read JSON file
with open('data.json') as data_file:
self.data_loaded = json.load(data_file)
print(self.data == self.data_loaded)
Scraper()
我试图抓取的HTML代码:
<table class="sportbet_extra_list_table" id="mc-ga312004790">
<tbody>
<tr>
<td class="sportbet_extra_c0"></td>
<td class="sportbet_extra_c1"><span>
<a class="combi_1"></a>
Hvem vinder kampen? </span></td>
<td class="sportbet_extra_c2">
<div id="mc-ti312004790_1" class="js-ti312004790_1 sportbet_extra_rate_content" onclick="Bettingslip.addBet({type: 'N', team1: 'Rusland', team2: 'Saudi Arabien', bettext: 'Hvem vinder kampen?', combi_cat: 1, sub_group: 0, game: 312004790, groupId:461392, leagueId:30124, odd: 138, odd_id: 312004790, tiptext: '1', tip: 1, betstyle: 2224})">
<div class="sportbet_content_rate_left">1</div>
<div class="sportbet_content_rate_right">1,38</div>
</div>
</td>
如果有人能想出一个很好的方法来为它制作一个结构,那就太开心了!
答案 0 :(得分:0)
Perhap你应该看看Scrapy,这个工具允许你通过juste创建一个解析器(就像你做的那样)来废弃网站,并将创建的项目导出到你想要的格式。
您必须创建Spider
和Item
来存储您的信息,然后使用以下命令运行抓取:
scrapy crawl 'your_parser_name' -t json -o '/path/to/your/file.json'