web-dev-qa-db-fra.com

Utilisation de Python et BeautifulSoup (codes sources de pages Web enregistrées dans un fichier local)

J'utilise Python 2.7 + BeautifulSoup 4.3.2.

J'essaie d'utiliser Python et BeautifulSoup pour collecter des informations sur une page Web. La page Web se trouvant sur le site Web de la société nécessite une connexion et une redirection. Je copie donc les codes source de la page cible dans un fichier. fichier et enregistrez-le sous "example.html" dans C:\pour la commodité de la pratique.

Cela fait partie des codes originaux:

<tr class="ghj">
    <td><span class="city-sh"><sh src="./citys/1.jpg" alt="boy" title="boy" /></span><a href="./membercity.php?mode=view&amp;u=12563">port_new_cape</a></td>
    <td class="position"><a href="./search.php?id=12563&amp;sr=positions" title="Search positions">452</a></td>
    <td class="details"><div>South</div></td>
    <td>May 09, 1997</td>
    <td>Jan 23, 2009 12:05 pm&nbsp;</td>
</tr>

Les codes que j'ai élaborés jusqu'à présent sont les suivants:

from bs4 import BeautifulSoup
import re
import urllib2

url = "C:\example.html"
page = urllib2.urlopen(url)
soup = BeautifulSoup(page.read())

cities = soup.find_all('span', {'class' : 'city-sh'})

for city in cities:
print city

Il ne s’agit que de la première phase d’essais, ce qui n’a pas été terminé.

Cependant, lorsque je l’exécute, un message d’erreur apparaît, il semble inapproprié d’utiliser "urllib2.urlopen" pour ouvrir un fichier local.

 Traceback (most recent call last):
   File "C:\Python27\Testing.py", line 8, in <module>
     page = urllib2.urlopen(url)
   File "C:\Python27\lib\urllib2.py", line 127, in urlopen
     return _opener.open(url, data, timeout)
   File "C:\Python27\lib\urllib2.py", line 404, in open
     response = self._open(req, data)
   File "C:\Python27\lib\urllib2.py", line 427, in _open
     'unknown_open', req)
   File "C:\Python27\lib\urllib2.py", line 382, in _call_chain
     result = func(*args)
   File "C:\Python27\lib\urllib2.py", line 1247, in unknown_open
     raise URLError('unknown url type: %s' % type)
 URLError: <urlopen error unknown url type: c>

De quelle manière puis-je pratiquer en utilisant un fichier local?

36
Mark K

Avec l'aide de Chandan, le problème a été résolu. Tous les crédits vont à lui. :)

le "urllib2.url" est inutile ici.

from bs4 import BeautifulSoup
import re
# import urllib2

url = "C:\example.html"
page = open(url)
soup = BeautifulSoup(page.read())

cities = soup.find_all('span', {'class' : 'city-sh'})

for city in cities:
    print city
19
Mark K

La meilleure façon d'ouvrir un fichier local avec BeautifulSoup est de lui transmettre directement un gestionnaire de fichiers ouvert. http://www.crummy.com/software/BeautifulSoup/bs4/doc/#making-the-soup

from bs4 import BeautifulSoup

soup = BeautifulSoup(open("C:\\example.html"), "html.parser")

for city in soup.find_all('span', {'class' : 'city-sh'}):
    print(city)
68
CasualDemon

Vous pouvez également utiliser l’analyseur LXML. Voici un exemple pour vos données HTML.

from lxml.html import fromstring
import lxml.html as PARSER

data = open('example.html').read()
root = PARSER.fromstring(data)

for ele in root.getiterator():
    if ele.tag == "td":
        print ele.text_content()

o/p: port_new_cape 452 South le 09 mai 1997 le 23 janvier 2009 12h05

6
Tanveer Alam