我是一名蟒蛇新手,並且嘗試學習一些python並主要用它來抓它。我設法做了一些簡單的刮板,但現在我正在研究更高級的腳本。使用Python/scrapy進行網頁瀏覽(這段代碼是否工作)
用csv文件,我有我試着讀col和列中的每個值im即將發佈此值在webform中的每個值。
我在這裏找到了一個腳本,但是我不能讓它爲我刮這些東西,因爲我不明白所有這些即時通訊有麻煩讓我的主要工具也能正常工作。
蜘蛛抓取,但它與飼料出口返回的僅僅是一個「[」
這裏是舊的線程Click
這裏是蜘蛛的代碼。
import csv
from scrapy.item import Item, Field
from scrapy.spider import BaseSpider
from scrapy.http import Request
from scrapy.http import FormRequest
from scrapy.selector import HtmlXPathSelector
class BtwItem(Item):
fttcAvailable = Field()
phoneNumber = Field()
class BtwSpider(BaseSpider):
name = "btw"
allowed_domains = ["samknows.com"]
def start_requests(self):
yield Request("http://www.samknows.com/broadband/broadband_checker", self.parse_main_page)
def parse_main_page(self, response):
with open('phones.csv', 'r') as f:
reader = csv.reader(f)
for row in reader:
phone_number = row[0]
yield FormRequest.from_response(response,
formdata={'broadband_checker[phone]': phone_number},
callback=self.after_post,
meta={'phone_number': phone_number})
def after_post(self, response):
hxs = HtmlXPathSelector(response)
sites = hxs.select('//div[@id="results"]')
phone_number = response.meta['phone_number']
for site in sites:
item = BtwItem()
fttc = site.select("div[@class='content']/div[@id='btfttc']/ul/li/text()").extract()
item['phoneNumber'] = phone_number
item['fttcAvailable'] = 'not' in fttc[0]
yield item
這裏是在phones.csv文件SOM例如數字
01253873647
01253776535
01142726749
一些評論/問題:「[」檢索?你的'start_requests'對我來說似乎毫無用處,因爲你在那裏什麼都不做。你爲什麼不用'start_requests'函數替換'parse_main_page'?畢竟這是你真正開始工作的地方,你不需要先連接到網站然後回調這個功能。你確定你在'after_post'函數中抓取的頁面是正確的嗎?你應該在'after_post'的開頭插入一個pdb(http://docs.python.org/2/library/pdb.html),看看你真正解析了什麼。你的最終xpath可以縮短! – Robin