2015-09-25 4 views
0

Я использую BeautifulSoup в Python 3.4 следующимИзвлечение строки с BeautifulSoup

soup = BeautifulSoup(urlopen(URL), 'html.parser') 

for fraction in soup.findAll("div", { "class" : "eventprice" }): 
    print(fraction.get_text()) 

данные, которые я пытаюсь извлечь из выглядит следующим образом:

<div id="ip_selection983317834" class="eventprice"> 


        1/2 


     </div> 

Я исследовал несколько вариантов с фракцией .get_div, изменение атрибутов, что нет. Что тут происходит?

+0

Можете ли вы поделиться целевым URL? – alecxe

+0

Каков результат, который вы получаете, и что такое URL? – dstudeba

+0

Попробуйте 'print (fraction.text)'. Это может работать – TerryA

ответ

2

Просто переключение на requests делает это работает для меня:

from bs4 import BeautifulSoup 
import requests 

URL = "http://sports.williamhill.com/bet/en-gb/betting/y/5/tm/0/Football.html" 
response = requests.get(URL) 

soup = BeautifulSoup(response.content, 'html.parser') 

for fraction in soup.findAll("div", { "class" : "eventprice" }): 
    print(fraction.get_text(strip=True)) 

Печать:

1/2 
16/5 
11/2 
8/5 
... 
5/6 
21/10 
7/2 

Я предполагаю, что это из-за заголовков по умолчанию, посланных requests. В моем случае они:

{'Accept-Encoding': 'gzip, deflate', 'Accept': '*/*', 'User-Agent': 'python-requests/2.3.0 CPython/2.7.6 Darwin/14.1.0'} 
Смежные вопросы