此蜘蛛旨在获取域中的URL列表,并将XPath内容写入html文件。当以``a +''打开txt文件并写入字符串时,我可以使它正常工作,但是如果我想以``ab +''打开html文件,则字符串或response.xpath结果都将无效。后者给了我这个错误:
TypeError:需要一个类似字节的对象,而不是“列表”
我无法确定列表的来源。
代码如下:
import scrapy
from scrapy.spiders import CrawlSpider, Rule
from scrapy.linkextractors import LinkExtractor
class MySpider(CrawlSpider):
name = 'FirstSpider'
allowed_domains = ['domain.com']
with open("urls.txt", "rt") as f:
start_urls = [url.strip() for url in f.readlines()]
def parse(self, response):
page = response.url.split("/")[-2]
filename = 'blah-%s.html' % page
with open(filename, 'ab+') as f:
f.write(response.xpath("//*[@id='content']").extract())
答案 0 :(得分:0)
将extract()
替换为get()
(或extract_first()
)。