Je m'entraîne depuis l'autre jour, mais Je ne pouvais pas faire les choses suivantes, Je l'ai fait, donc je vais l'écrire dans l'article.
-Je veux gratter le texte et l'URL de destination du lien qui existent dans la structure de la table sous forme d'ensemble (en utilisant DataFrame de pandas) -L'URL de destination du lien avait plusieurs a hrefs dans la même table et aucun nom identifiable n'était donné, il était donc difficile de prendre même une expression régulière. → J'ai décidé d'utiliser XPath car il me semblait bon de spécifier une phrase de texte, de la spécifier comme destination de lien de ce texte et de la gratter. (DataFrame renverra une erreur si le nombre de lignes n'est pas aligné, donc je veux omettre les données inutiles et les prendre sûrement) ・ Beautiful Soup ne peut pas utiliser XPath, mais cela peut être fait en utilisant lxml.
[Site auquel j'ai fait référence] http://gci.t.u-tokyo.ac.jp/tutorial/crawling/ http://www.slideshare.net/tushuhei/python-xpath http://qiita.com/tamonoki/items/a341657a86ff7a945224
scraping.py
#coding: utf-8
from bs4 import BeautifulSoup
import urllib2
import pandas as pd
import time
import lxml.html
aaa = []
bbb = []
for page in range(1,2):
url = "http://www.~~~" + str(page)
html = urllib2.urlopen(url)
html2 = urllib2.urlopen(url)
soup = BeautifulSoup(html, "lxml")
dom = lxml.html.fromstring(html2.read())
for o1 in soup.findAll("td", class_="xx"):
aaa.append(o1.string)
for o2 in dom.xpath(u"//a[text()='xxx']/@href"): #Obtenez href en spécifiant du texte pour la partie xxx
bbb.append(o2)
time.sleep(2)
df = pd.DataFrame({"aaa":aaa, "bbb":bbb})
print(df)
df.to_csv("xxxx.csv", index=False, encoding='utf-8')
C'est facile, mais c'est tout pour aujourd'hui.
Recommended Posts