我正在构建一个crawl.spider来从以下网站(https://www.azleg.gov/viewdocument/?docName=https://www.azleg.gov/ars/1/00101.htm)抓取法律法规数据。我旨在提取法规文本,该法规文本包含在以下XPath [// div [@class ='first'] / p / text()]中。此路径应提供法规文本。
我所有的抓取请求都产生不完整的html响应,因此当我搜索相关的xpath查询时,它会产生一个空列表。但是,当我使用请求库时,html会正确下载。
我已在线使用XPath测试器验证了我的xpath查询应该产生所需的内容。使用scrapy shell,我在浏览器中查看了来自scrapy的响应对象-看起来就像在本地浏览时一样。我曾尝试为BeautifulSoup和Selenium启用中间件,但两者似乎都没有用。
这是我的爬行蜘蛛
class AZspider(CrawlSpider):
name = "arizona"
start_urls = [
"https://www.azleg.gov/viewdocument/?docName=https://www.azleg.gov/ars/1/00101.htm",
]
rule = (Rule(LinkExtractor(restrict_xpaths="//div[@class = 'article']"), callback="parse_stats_az", follow=True),)
def parse_stats_az(self, response):
statutes = response.xpath("//div[@class = 'first']/p")
yield{
"statutes":statutes
}
这是成功生成正确响应对象的代码
az_leg = requests.get("https://www.azleg.gov/viewdocument/?docName=https://www.azleg.gov/ars/1/00101.htm")