Je programme Python depuis environ 3 mois les soirs de semaine et les week-ends, mais je m'amuse toujours.
Ce que j'ai fait récemment
1, analyse morphologique ・ Je voulais saisir le flux de données de lancement dans Mecab, en réduisant uniquement la nomenclature, en calculant la fréquence, puis en ajoutant un dictionnaire utilisateur et en essayant à nouveau, alors j'ai essayé un peu. ・ Comme il a été terminé immédiatement, je ne décrirai pas les détails. .. ..
[Site auquel j'ai fait référence] http://qiita.com/fantm21/items/d3d44f7d86f09acda86f http://qiita.com/naoyu822/items/473756fb8e8bbdc4d734 http://www.mwsoft.jp/programming/munou/mecab_command.html http://shimz.me/blog/d3-js/2711
2, grattage ・ Le grattage comme les textes et les images est très souvent lié au travail, donc je voulais étudier dans une certaine mesure, donc cette fois je suis parti de livres https://www.amazon.co.jp/dp/4873117615
・ Tout d'abord, il était bien entendu que Python + Beautiful Soup peut rapidement prendre une seule page avec une structure facile à comprendre.
・ Ensuite, il s'est avéré que le site généré par JS est difficile avec la combinaison ci-dessus, et il y a PhantomJS et CasperJS, et en écrivant en JS et en grattant, il peut être repris rapidement.
・ Après cela, il a été constaté que même en Python, la combinaison de Selenium + PhantomJS peut gratter les sites Web générés par JS.
-Pour le moment, quand j'ai essayé de convertir en csv avec le Pandas Dataframe du dernier code, je suis resté coincé avec UnicodeEncodeError, mais je veux le faire pour le moment avec la fin que je mette la spécification d'encodage à la place pour convertir en csv avec Dataframe et le résoudre. A été réalisé
[Site auquel j'ai fait référence] http://doz13189.hatenablog.com/entry/2016/08/21/154219 http://zipsan.hatenablog.jp/entry/20150413/1428861548 http://qiita.com/okadate/items/7b9620a5e64b4e906c42
Je viens de combiner les sources des sites auxquels j'ai fait référence avec du copier-coller, mais je l'ai fait avec les sources suivantes. .. ..
scraping.py
import lxml.html
from selenium import webdriver
from bs4 import BeautifulSoup
import pandas as pd
import time
aaa = []
bbb = []
ccc = []
for page in range(1,2): #Définissez la limite de pages comme il convient
driver = webdriver.PhantomJS()
driver.get("https://www.~~=page=" + str(page))
data = driver.page_source.encode('utf-8')
soup = BeautifulSoup(data, "lxml")
for o in soup.findAll("h3", class_="hoge"):#Je le vois souvent, mais pourquoi tout le monde l'appelle-t-il hoge?
aaa.append(o.string)
for o1 in soup.findAll("h3", class_="hoge"):#Pourquoi hoge?
bbb.append(o1.string)
for o2 in soup.findAll("div", class_="hoge"):#Quoi...?
ccc.append(o2.get_text())
time.sleep(3)
df = pd.DataFrame({"aaa":aaa, "bbb":bbb, "ccc":ccc})
print(df)
df.to_csv("hogehoge.csv", index=False, encoding='utf-8')
driver.quit()
Il y a de nombreux endroits dont je ne suis pas sûr, mais cela a fonctionné pour le moment.
Je vais continuer à étudier.
Recommended Posts