我一直在摸索如何解决地雷的这种困境一段时间了。我的csv文件中有一个Address列,其中包含Addresses列表。我希望能够指示Python使用csv文件中的各个地址值搜索下面指定的网站,并将结果保存到新的csv文件中。
import csv
import requests
with open('C:/Users/thefirstcolumn.csv') as csvfile:
reader = csv.DictReader(csvfile)
for row in reader:
print(row['Address'])
website = requests.get('https://etrakit.friscotexas.gov/Search/permit.aspx')
writer = csv.writer(open('thematchingresults.csv', 'w'))
print website.content
例如:
我在csv文件中的地址值之一:
6525 Mountain Sky Rd
当我在搜索框中手动粘贴地址时,返回三行数据。如何告诉Python在网站上的csv文件中搜索每个地址,并将每个地址的结果保存在新的csv文件中。我怎样才能完成这项多山任务呢?
答案 0 :(得分:3)
请求模块从网站下载静态HTML页面。您无法与Javascript交互
您需要使用Selenium与网站进行互动
例如
from selenium import webdriver
from bs4 import BeautifulSoup
import time
driver = webdriver.Firefox()
driver.get('https://etrakit.friscotexas.gov/Search/permit.aspx')
#read in addresses
with open('file.csv','r') as f:
adresses = f.readlines()
# use css selectors to locate search field
for address in adresses:
driver.find_element_by_css_selector('#cplMain_txtSearchString').clear()
driver.find_element_by_css_selector('#cplMain_txtSearchString').send_keys(address)
driver.find_element_by_css_selector('#cplMain_btnSearch').click()
time.sleep(5)
# JS injected HTML
soup = BeautifulSoup(driver.page_source)
# extract relavant info from the soup
# and save to your new csv here
答案 1 :(得分:2)
您需要为csv文件中的每个值执行sed 's/|[^|]*|[^|]*$//' inputfile
请求。例如,要在https://etrakit.friscotexas.gov/Search/permit.aspx搜索“6525 Mountain Sky Rd”,您可以查看开发者控制台以查看它提供的POST参数。例如:
您可以使用POST
之类的内容并传递标题值和表单数据,也可以使用requests
或casper
之类的内容来模拟浏览器。