私は3000以上のウェブサイトをパイソンで美味しいものに削り取ろうとしています。私のコードは約50のウェブサイトで働いていましたが、同時に1000または3000+を実行するとスタックになるでしょう。素敵なスープを使ったテキストのスクラップ - なぜバルクアドレスが機能しないのですか
コードが複数のWebサイトでは機能しないことは間違いですが、私はこれをトラブルシューティングする方法についていくつかアドバイスを受けたいと思います。これは正常ですか、それとも別の方法ですか?
私が1000を実行すると、6時間か7時間後でも結果が返ってこないので、コードがまったく動作していないと思われます。私はいくつかのコメントをしたいと思います。
コード: は、(1)コードが期待するものではないデータを持っているあなたのリスト内のリンクがあります:
import csv
d = csv.DictReader(open('file.csv', 'rU'))
soc = []
for row in d:
soc.append(row)
import sys
reload(sys)
sys.setdefaultencoding('utf8')
from bs4 import *
import time
import requests
import urllib2
# create lists
mega = []
mega2 = []
mega3 = []
for i in range(len(soc)): # all links, about 3000
myurl = soc[i]['report_url']
try:
html = urllib2.urlopen(myurl).read()
except urllib2.HTTPError, error:
continue
except urllib2.URLError, error:
continue
soup = BeautifulSoup(html, "html.parser")
row = soup.findAll('tr')
for r in row:
mega.append([r.get_text()]) # force all raw text into a list in list
mega2 = [x[0] for x in mega]
mega3.append(mega2)
time.sleep(2)
IPSまたはそのCDN /ファイアウォールによってブロックされているかどうかを確認しましたか? – VMRuiz
いくつかの印刷ステートメントを追加して、どこに詰まっているかを確認します。 1つの方法は、各行の間に1つずつ追加し、1から出力するようにすることです。 – Lexxxxx
@Lexxxxxもっと具体的になりますか?どうやってスタックされた場所を印刷するようにPythonに指示できますか? – song0089