【发布时间】:2017-09-04 10:32:47
【问题描述】:
您好,我想从多个 URL 中删除数据,我正在这样做
for i in range(493):
my_url = 'http://tis.nhai.gov.in/TollInformation?TollPlazaID={}'.format(i)
但它没有给我完整的数据,它只打印最后一个 url 数据,
这是我的代码,请帮助
from urllib.request import urlopen as uReq
from bs4 import BeautifulSoup as soup
import psycopg2
import operator
for i in range(493):
my_url = 'http://tis.nhai.gov.in/TollInformation?TollPlazaID={}'.format(i)
uClient = uReq(my_url)
page1_html = uClient.read()
uClient.close()
# html parsing
page1_soup = soup(page1_html, 'html.parser')
# grabing data
containers = page1_soup.findAll('div', {'class': 'PA15'})
# Make the connection to PostgreSQL
conn = psycopg2.connect(database='--',user='--', password='--', port=--)
cursor = conn.cursor()
for container in containers:
toll_name1 = container.p.b.text
toll_name = toll_name1.split(" ")[1]
search1 = container.findAll('b')
highway_number = search1[1].text.split(" ")[0]
text = search1[1].get_text()
onset = text.index('in')
offset = text.index('Stretch')
state = str(text[onset +2:offset]).strip(' ')
location = list(container.p.descendants)[10]
mystr = my_url[my_url.find('?'):]
TID = mystr.strip('?TollPlazaID=')
query = "INSERT INTO tollmaster (TID, toll_name, location, highway_number, state) VALUES (%s, %s, %s, %s, %s);"
data = (TID, toll_name, location, highway_number, state)
cursor.execute(query, data)
# Commit the transaction
conn.commit()
但它只显示倒数第二个网址数据
【问题讨论】:
-
你的“格式”语句只生成一个 url...
-
但是我还有很多其他的网址,例如
http://tis.nhai.gov.in/TollInformation?TollPlazaID=203 http://tis.nhai.gov.in/TollInformation?TollPlazaID=258,那我该怎么办? -
我想像:
my_url = 'http://tis.nhai.gov.in/TollInformation?TollPlazaID={}'.format(i) -
仍然抛出错误` tbody = soup('table', {"class": "tollinfotbl"})[0].find_all('tr')[1:] IndexError: list index out范围`
-
检查错误提示您正在尝试访问不存在的项目
标签: python web-scraping beautifulsoup