0
我知道有一個日期時間問題 - 不知道在哪裏。當我試圖抓取更老的表格時,我返回的數據是通過今天的數據循環的。我認爲我需要另一個封裝循環才能訪問較舊的頁面python beautifulsoup抓取歸檔頁面
我該如何解決這個問題?
from urlparse import urljoin
from urllib2 import urlopen
import requests
from bs4 import BeautifulSoup
import re
from datetime import datetime, timedelta
url = "http://www.wsj.com/mdc/public/page/2_3022-mfsctrscan-moneyflow-{}.html?mod=mdc_pastcalendar"
start = datetime.today()
def only_weekdays_range(start, n):
i = 0
wk_days = {0, 1, 2, 3, 4}
while i != n:
while start.weekday() not in wk_days:
start -= timedelta(days=1)
yield start
i += 1
start -= timedelta(days=1)
for _ in (only_weekdays_range(start, 5)):
print ("data for {}".format(start.strftime("%b %d %y")))
url = url.format(start.strftime('%Y%m%d'))
print 'Retrieving information from: ' + url
print '\n'
r = requests.get(url)
soup = BeautifulSoup(r.content, "lxml")
div_main = soup.find('div', {'id': 'column0'})
table_one = div_main.find('table')
def target_row(tag):
is_row = len(tag.find_all('td')) > 5
row_name = tag.name == 'tr'
return is_row and row_name
rows = table_one.find_all(target_row)[1:]
#print rows
for row in rows:
cells = row.findAll('td')
industry = cells[0].get_text()
data = {
'name' : cells[0].get_text()
print data
print '\n'
所以文本正在改變「從retreiving信息。」 - 但URL不增加,以反映從舊日期的回報 - 不斷推進從今天的數據 - 說它從舊日期是 –
同樣的問題 - 你必須使用'new_date'而不是'開始' - 這是顯而易見的。 BTW:看到第一個代碼 - 在'url.format(new_date.strftime('%Y%m%d'))''new_date'' – furas
現在我看到其他問題'url = url.format(...) - 你在下一個循環中覆蓋'url',所以你不能更改日期 - 使用'full_url = url.format(...)' – furas