【问题标题】:Python Web Scraping - POST & GETPython 网页抓取 - POST & GET
【发布时间】:2014-02-16 22:05:36
【问题描述】:

我正在尝试从以下网站收集公共房地产数据:http://icare.fairfaxcounty.gov/search/commonsearch.aspx?mode=address。我已经解决了第一部分,它使用 POST 请求来搜索给定的街道(本例中为 Main St)。

from bs4 import BeautifulSoup
import requests
import urllib, urllib2

streetName = 'main'
suffix = 'st'

url = "http://icare.fairfaxcounty.gov/search/CommonSearch.aspx?mode=ADDRESS"

values = {  '__VIEWSTATE':'/wEPDwUJLTgxMDY5OTM2DxQrAAJkZxYCZg9kFgQCBQ8PFgIeB1Zpc2libGVoZBYCZg9kFgJmD2QWAgIBD2QWAgIBD2QWAgIBDxBkZBYAZAIHDw8WAh8AaGRkZA==',
      '__EVENTVALIDATION' :'/wEWCAL/k9GbBALq6fr+DwKw9e7KCwKNs9bAAwLYyu+sAwLE8frfBwK5mc2yBwLunJLZAQ==',
      'PageNum':'',
      'SortBy':'PARID',
      'SortDir': 'asc',
      'PageSize':50,
      'hdAction':'Search',
      'hdIndex': '',
      'sIndex':-1,
      'hdListType':'PA',
      'hdJur': '', 
      'inpNumber': '',
      'inpUnit': '',
      'inpStreet':streetName ,
      'inpSuffix1':suffix,
      'selSortBy':'PARID' ,
      'selSortDir': 'asc' ,
      'selPageSize':50 ,
      'searchOptions$hdBeta': '',
      'btSearch':'SEARCH',
      'mode':'ADDRESS',
      'mask': ''}

data = urllib.urlencode(values)
req = urllib2.Request(url, data)
response = urllib2.urlopen(req)
pageText = response.read()

#now I can parse the list of addresses from this page
soup = BeautifulSoup(pageText)

但是,我无法弄清楚如何创建单击其中一个地址的效果,以便我可以解析该信息。有人能指出我正确的方向吗?

【问题讨论】:

    标签: python parsing post get web-scraping


    【解决方案1】:

    没有effect of clicking,它只是http get 和post 请求。

    一个方向是写a scrapy spider,其中包括以下步骤:

    1. 在其第一个 parse 函数中使用 FormRequest 获取地址行
    2. 使用scrapy xpath selector 循环它们并创建更多请求
    3. 定义和使用您要抓取的项目以及您希望获取结果的格式

    它有一些学习曲线,但我很确定它是正确的方向,至少其中之一,祝你好运!

    【讨论】:

      猜你喜欢
      • 2021-01-12
      • 2022-01-27
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2019-01-20
      • 2023-03-12
      相关资源
      最近更新 更多