在网站上搜索地址值

时间:2016-12-14 21:01:17

标签: python python-2.7 csv web-scraping

我一直在摸索如何解决地雷的这种困境一段时间了。我的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文件中。我怎样才能完成这项多山任务呢?

2 个答案:

答案 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参数。例如:

enter image description here

您可以使用POST之类的内容并传递标题值和表单数据,也可以使用requestscasper之类的内容来模拟浏览器。