知りたい事
いくつか聞きたい事があります
1.collections.insert_one(insert_dict)
の部分の、.insert_one
は合っていると思いますか?エラーは出てないんですけど・・・
2.repatter = re.compile('[^0-9]+')
の部分の動きがわかりません。何をコンパイルしてるんでしょうか?文字列とかですか?
3.'offers': int(re.sub(repatter, "", offers))
の部分の動きもわかりません。何をどう調べたら分かりますか?
該当コード
code
1import time 2import requests 3from bs4 import BeautifulSoup 4from pymongo import MongoClient 5import re 6 7client = MongoClient('localhost', 27017) 8db = client.scraping 9collections = db.gihyo 10 11def get_detail(URI): 12 r = requests.get(URI) 13 soup = BeautifulSoup(r.content, 14 'lxml', 15 from_encoding="utf-8") 16 offers = soup.find(itemprop="offers").get_text().split(" ( ")[0] 17 repatter = re.compile('[^0-9]+') 18 19 insert_dict = { 20 '_id': soup.find(itemprop="isbn").get_text(), 21 'title': soup.find(class_="mainTitleBook").get_text(), 22 'author': soup.find(itemprop="author").get_text().rstrip(" 著").rstrip(" 編").split(" , "), 23 'offers': int(re.sub(repatter, "", offers)) 24 } 25 26 collections.insert_one(insert_dict) 27 28if __name__ == "__main__": 29 BASE_URI = 'https://gihyo.jp' 30 31 start = time.time() 32 r = requests.get(BASE_URI + '/book/genre?s=0802') 33 34 while True: 35 soup = BeautifulSoup(r.content, 36 'lxml', 37 from_encoding="utf-8") 38 for b in soup.find_all(class_='data'): 39 get_detail(BASE_URI + b.find("a").get("href")) 40 41 next_url = soup.find(class_="next").a 42 if next_url is None: 43 continue 44 45 r = requests.get(BASE_URI + next_url.get("href")) 46 47 print('{:.5f}'.format(time.time() - start)) 48 49