2017-02-07 3 views
0

Dies ist der Code, den ich verwende. es gibt eine leere Liste zurück. Konnte nicht herausfinden, was ich falsch mache!Web-Verschrottung - extrahieren Sie Daten von einer Seite mit Python

from urllib request import urlopen 
import re 

url = 'http://pubs.acs.org/doi/full/10.1021/jacs.6b10998'# example of a web page 
html = urlopen(url).read().decode('utf-8')# decoding 

cite_year='<span class="citation_year">(.+?)</span>'# extract citation year 
pattern = re.compile(cite_year) #compile 
citation_year = re.findall(pattern, html) #store data into a variable 

print(citation_year)# and print 
+0

Sind Sie sicher, Ihre regex ist richtig? –

+0

Vorschlagen Ihre ersten beiden Zeilen mit Beispieldaten zu ersetzen (ich habe html = "" " test ... ... bar ... drei vier ... ... bar ""“ und arbeitete dann der Rest des Codes wie erwartet ... dies würde Damit können Sie bestimmen, wo das Problem liegt und ob Ihre Daten Zitate haben, wie Sie es erwarten. Beachten Sie auch, dass SO dazu neigt, HTML mit regexp nicht zu analysieren – Foon

Antwort

0

Add-Header auf die Anfrage, verwende ich requests und bs4 Bibliothek:

import requests 
import bs4 
headers = {'User-Agent':'Mozilla/5.0'} 
url = 'http://pubs.acs.org/doi/full/10.1021/jacs.6b10998'# example of a web page 
html = requests.get(url, headers=headers) 
soup = bs4.BeautifulSoup(html.text, 'lxml') 
year = soup.find(class_="citation_year").text 
print(year) 
Verwandte Themen