2017-11-20 4 views
0

私は何千もの記事を保管する記事管理システム全体を削っています。私のスクリプトは動作しますが、問題は、beautifulsouprequestsはどちらも、そのページが実際の記事か記事が見つからないページかを判断するのに時間がかかります。私は約4000の記事を持っており、計算によって、スクリプトが実行される時間は数日で完了します。類似のパターンの有効なURLを抽出するにはどうすればよいですか?

for article_url in edit_article_list: 
    article_edit_page = s.get(article_url, data=payload).text 
    article_edit_soup = BeautifulSoup(article_edit_page, 'lxml') 

    # Section 
    if article_edit_soup.find("select", {"name":"ctl00$ContentPlaceHolder1$fvArticle$ddlSubMenu"}) == None: 
     continue 
    else: 
     for thing in article_edit_soup.find("select", {"name":"ctl00$ContentPlaceHolder1$fvArticle$ddlSubMenu"}).findAll("option", {"selected":"selected"}): 
      f.write(thing.get_text(strip=True) + "\t") 

最初のifは、URLが良いか悪いかを判断します。 edit_article_listがで構成されています

for count in range(87418,307725): 
    edit_article_list.append(login_url+"AddEditArticle.aspxArticleID="+str(count)) 

私のスクリプト今、悪いと良いのURLをチェックして、コンテンツを掻き取ります。 URLリストを作成中にrequestsを使用して同様のパターンの有効なURLを取得する方法はありますか?リダイレクトを許可すると、ステータスコードをチェックしないようにする必要があり、存在しない記事スキップする

+0

あなたの 'edit_article_list'は完全で正しいですか?平均して各ページが解析するのにどれくらい時間がかかりますか? –

+0

@JonClements問題は、範囲87418〜307725の間にいくつかの数字がないことです。たとえば、90000〜10000が不足している可能性があります。 –

+0

'edit_article_list'は完全ではありません。それはあまりにも悪いURLを含んでいます。 1ページの解析には約5秒かかります。しかし、すべての記事のリストを使って解析しようとすると、多くの時間がかかります –

答えて

1

for article_url in edit_article_list: 
    r = requests.get(article_url, data=payload, allow_redirects=False) 
    if r.status_code != 200: 
     continue 
    article_edit_page = r.text 
    article_edit_soup = BeautifulSoup(article_edit_page, 'lxml') 

    # Section 
    if article_edit_soup.find("select", {"name":"ctl00$ContentPlaceHolder1$fvArticle$ddlSubMenu"}) == None: 
     continue 
    else: 
     for thing in article_edit_soup.find("select", {"name":"ctl00$ContentPlaceHolder1$fvArticle$ddlSubMenu"}).findAll("option", {"selected":"selected"}): 
      f.write(thing.get_text(strip=True) + "\t") 

を私はしかし、実際のURLの記事一覧ページを解析お勧めします - あなたは現在オフに発射されています200,000件以上のリクエストがあり、4,000件の記事だけが必要です。オーバーヘッドやトラフィックが多く、効率的ではありません。

+0

さらにご覧いただきありがとうございます。 –

関連する問題