Я знаю, что есть проблема с датой - не знаю где. Когда я пытаюсь очистить прогестрически старые таблицы, мои возвращенные данные представляют собой цикл через сегодняшние данные. Я думаю, мне нужен еще один инкапсулирующий цикл, чтобы перейти на более старые страницы.python beautifulsoup scraping archive страницы
Как я могу решить эту проблему?
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' вместо' start' - это очевидно. BTW: см. Первый код - есть 'new_date' в' url.format (new_date.strftime ('% Y% m% d')) ' – furas
Теперь я вижу другую проблему' url = url.format (...) ' - вы перезаписываете 'url', поэтому в следующем цикле вы не можете изменить дату - используйте' full_url = url.format (...) ' – furas