我是python的新手,我正在研究使用scrapy来抓取页面上的特定元素。
我需要提取会员页面上列出的姓名和电话号码。
此脚本将获取整个页面,我可以添加/更改哪些内容才能获取这些特定元素?
import scrapy
class DmozSpider(scrapy.Spider):
name = "dmoz"
allowed_domains = ["fali.org"]
start_urls = [
"http://www.fali.org/members/",
]
def parse(self, response):
filename = response.url.split("/?id=")[-2] + '%random%'
with open(filename, 'wb') as f:
f.write(response.body)
答案 0 :(得分:0)
我看不到页面: http://www.fali.org/members/
而是重定向到主页。
这使得无法给出具体细节。
以下是一个例子:
-keep class in.intellicode.webservices.models.** { *; }
-keep class in.intellicode.models.** { *; }
-keep class in.intellicode.events.*{ *; }
-keepattributes Signature
-keepattributes *Annotation*
-keep class sun.misc.Unsafe { *; }
解析"佛罗里达州执照调查员协会(FALI)"从他们的主页。你可以获得浏览器插件,以帮助你找出xpaths。 Chrome上的XPath Helper让它变得简单。
那就是说 - 浏览上面发布的教程。因为你会有更多的问题我确定,这样的广泛问题在堆栈溢出方面并不好。
答案 1 :(得分:0)
由于shark3y声明in his answer start_url
被重定向到主页。
如果你已阅读文档,你应该知道Scrapy开始从start_url
抓取,并且它不知道你想要实现什么。
在您的情况下,您需要从http://www.fali.org/search/newsearch.asp
开始,它会返回所有成员的搜索结果。现在,您可以设置Rule
以浏览结果列表,并为找到的每个成员调用parse_detail
方法,并按照结果分页中的链接进行操作。
在parse_detail
方法中,您可以浏览该成员的网站并提取您需要的所有信息。我猜你不需要像你在你的问题中的例子中那样需要整个网站,因为它会在你的计算机上生成大量数据 - 最后你还是要解析它。