Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/image-processing/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 在网站上搜索地址值_Python_Python 2.7_Csv_Web Scraping - Fatal编程技术网

Python 在网站上搜索地址值

Python 在网站上搜索地址值,python,python-2.7,csv,web-scraping,Python,Python 2.7,Csv,Web Scraping,一段时间以来,我一直在琢磨如何解决矿山的这一困境。我的csv文件中有一个地址列,其中包含地址列表。我希望能够指导Python使用csv文件中的各个地址值搜索下面指定的网站,并将结果保存到新的csv文件中 import csv import requests with open('C:/Users/thefirstcolumn.csv') as csvfile: reader = csv.DictReader(csvfile) for row in reader:

一段时间以来,我一直在琢磨如何解决矿山的这一困境。我的csv文件中有一个地址列,其中包含地址列表。我希望能够指导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文件中。如何完成这项艰巨的任务?

请求模块从网站下载静态HTML页面。您不能与Javascript交互

您需要使用与网站交互

比如说

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

请求模块从网站下载静态HTML页面。您不能与Javascript交互

您需要使用与网站交互

比如说

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

您需要对csv文件中的每个值执行
POST
请求。例如,要在上搜索“6525 Mountain Sky Rd”,您可以查看开发人员控制台以查看它提供了什么POST参数。例如:


您可以使用类似于
请求
的方法传递标题值和表单数据,也可以使用类似于
casper
selenium
的方法模拟浏览器

您需要对csv文件中的每个值执行
POST
请求。例如,要在上搜索“6525 Mountain Sky Rd”,您可以查看开发人员控制台以查看它提供了什么POST参数。例如:



您可以使用类似于
请求
的方法传递标题值和表单数据,也可以使用类似于
casper
selenium
的方法模拟浏览器

您不能做什么?我需要关于如何指导Python逐个搜索每个地址列值的帮助。我该怎么做?您不能做什么?我需要帮助,了解如何指导Python逐个搜索每个地址列值。我该怎么做呢?多亏了Tobey,我尝试了Selenium,但据我所知,Selenium只打开一个浏览器并使其自动化。我认为它实际上无法在搜索框中逐个搜索每个地址列值。我将扩展我的答案以解释Hanks Tobey,该脚本做了大量工作,但它不会将地址的结果保存在csv文件中。如何实现呢?您需要使用html解析器从页面源中提取所需的信息。我建议喝汤。我会让你弄明白这一点谢谢Tobey的帮助。谢谢Tobey,我尝试了Selenium,但据我所知,Selenium只会打开浏览器并使其自动化。我认为它实际上无法在搜索框中逐个搜索每个地址列值。我将扩展我的答案以解释Hanks Tobey,该脚本做了大量工作,但它不会将地址的结果保存在csv文件中。如何实现呢?您需要使用html解析器从页面源中提取所需的信息。我建议喝汤。我会让你解决这个问题谢谢Tobey的帮助selenium在这里怎么可行?我过去曾使用过它,从我的理解来看,简而言之,它自动化了一个网页抓取过程。@PLearner另一个答案对此给出了很好的解释。如果这不能解决您的问题,请告诉我。该脚本的工作非常出色,但它不会将地址的结果保存在csv文件中。如何实现这一点?硒在这里如何可行?我过去曾使用过它,从我的理解来看,简而言之,它自动化了一个网页抓取过程。@PLearner另一个答案对此给出了很好的解释。如果这不能解决您的问题,请告诉我。该脚本的工作非常出色,但它不会将地址的结果保存在csv文件中。如何实现这一点?