网页抓取:如何获取使用数据库信息的网址?

时间:2014-05-10 21:32:55

标签: python post web web-scraping scrapy

这是我的问题陈述:

我正在尝试从http://www.aogc2.state.ar.us/AOGConline/检索状态的所有特定信息。在做了一点R& D之后,我发现个别的井信息存储在路径结构中:

http://www.aogc2.state.ar.us/AOGConline/ED.aspx?KeyName=API_WELLNO&KeyValue=03143100280000&KeyType=STRING&DetailXML=WellDetails.xml

其中每个KeyValue对于每个井都是唯一的。我试图在KeyValue中导出一个通用模式 - 对于上面的URL,例如3143100280000,03代表州(阿肯色州),143代表县,但剩下的没有 - 100280000不是必然遵循连续模式,从而使生活变得困难。

有没有办法在这里获得43K +井的所有KeyValues(我假设它来自数据库)?尝试查找从http://www.aogc2.state.ar.us/AOGConline/加载的所有源js文件但没有指向所有KeyValues / Well API源目录

使用Python Scrapy我编写了以下蜘蛛,它抓取了一些特定的Well XML URL。需要制作这个通用的,以便获得所有43k +井信息,但无法在这里找到找出所有KeyValues的方法

from scrapy.spider import Spider
from scrapy.selector import Selector
import codecs

class AogcSpider(Spider):
name = "aogc"
allowed_domains = ["http://www.aogc2.state.ar.us/"]
start_urls = [
    "http://www.aogc2.state.ar.us/AOGConline/ED.aspx?KeyName=API_WELLNO&KeyValue=03143100280000&KeyType=STRING&DetailXML=WellDetails.xml",
    "http://www.aogc2.state.ar.us/AOGConline/ED.aspx?KeyName=API_WELLNO&KeyValue=03143100290000&KeyType=STRING&DetailXML=WellDetails.xml",
    "http://www.aogc2.state.ar.us/AOGConline/ED.aspx?KeyName=API_WELLNO&KeyValue=03143100300000&KeyType=STRING&DetailXML=WellDetails.xml",
    "http://www.aogc2.state.ar.us/AOGConline/ED.aspx?KeyName=API_WELLNO&KeyValue=03143100310000&KeyType=STRING&DetailXML=WellDetails.xml",
    "http://www.aogc2.state.ar.us/AOGConline/ED.aspx?KeyName=API_WELLNO&KeyValue=03143100320000&KeyType=STRING&DetailXML=WellDetails.xml",
    "http://www.aogc2.state.ar.us/AOGConline/ED.aspx?KeyName=API_WELLNO&KeyValue=03143100330000&KeyType=STRING&DetailXML=WellDetails.xml"
]

def parse(self,response):
    hxs =  Selector(response)
    trnodes = hxs.xpath("//td[@class='ColumnValue']")
    filename = codecs.open("aogc_wells","a","utf-8-sig")
    filename.write("\n")
    for nodes in trnodes:
        ftext = nodes.xpath("text()").extract()
        for txt in ftext:
            filename.write(txt)
            filename.write("|")

0 个答案:

没有答案