2016-03-21 22 views
0

だから私はこのウェブサイトからフロリダ州法をこすりしようとしています: http://www.leg.state.fl.us/Statutes/index.cfm?App_mode=Display_Statute&URL=0000-0099/0001/0001.html:www.leg.state.fl.us/Statutes/BeautifulSoupを使ったPython Webのスクラップ、複雑なURLをループする方法は?

は、これまでのところ私は延期章をこすりすることができています。

URLが「URL = 0000-0099/0002/0002.html」に変更されていることに気付きました。次の章にジャンプします。私の質問は、どのように私はすべての章をかき集めることができるようにコード化するのですか? (URL 0000から0099の最初の部分は章の範囲であるので、この場合は、それが第一から第99章になります)

私のコードは以下の通りです:

from bs4 import BeautifulSoup 
import urllib2 

f = open('C:\Python27\projects\outflieFS_final.txt','w') 

def First_part(url): 
    thepage = urllib2.urlopen(url) 
    soupdata = BeautifulSoup(thepage,'html.parser') 
    return soupdata 

soup = First_part("http://www.leg.state.fl.us/statutes/index.cfm?App_mode=Display_Statute&URL=0000-0099/0001/0001.html") 

tableContents = soup.find('div', {'id': 'statutes' }) 

for data in tableContents.findAll('div'): 
    data = data.text.encode("utf-8","ignore") 
    data = str(data)+ "\n\n" 
    f.write(data) 
f.close() 

答えて

0

ループを作成し、にstring formattingを使用します

base_url = "http://www.leg.state.fl.us/Statutes/index.cfm?App_mode=Display_Statute&URL=0000-0099/00{chapter:02d}/00{chapter:02d}.html" 
for chapter in range(1, 100): 
    url = base_url.format(chapter=chapter) 
    print(url) 
    # make a request and parse the page 

これは、次のURLを生成します:迅速な返信用

http://www.leg.state.fl.us/Statutes/index.cfm?App_mode=Display_Statute&URL=0000-0099/0001/0001.html 
http://www.leg.state.fl.us/Statutes/index.cfm?App_mode=Display_Statute&URL=0000-0099/0002/0002.html 
... 
http://www.leg.state.fl.us/Statutes/index.cfm?App_mode=Display_Statute&URL=0000-0099/0098/0098.html 
http://www.leg.state.fl.us/Statutes/index.cfm?App_mode=Display_Statute&URL=0000-0099/0099/0099.html 
+0

おかげで、あなたのコードがされたURLを形成しますチャプターの範囲を変更します。 0001/0001の部分を2番目の章で0002/0002に、3番目の章で0003/0003に変更したいと思います。 – CHballer

+0

@TianMa大丈夫です。範囲をそのままにしておきたいと仮定して更新しました。 – alecxe

+0

ありがとう!出来た。私はtxtファイルに出力を書き込むときに、どのように私の出力を別の形式で3回出力するのですか?私の「for」声明に何か間違っていますか? – CHballer

関連する問題