【发布时间】:2015-05-17 15:11:58
【问题描述】:
我想从一个页面开始抓取并使用下一个 url 遍历到 100 个页面,这是我用以下代码编写的。我需要转到该爬网中的另一个链接并提取数据并存储在项目中。我可以轻松打印所有要导出的项目数据,但无法根据需要从函数返回。
class UserLoginCrawl(CrawlSpider):
name = "mylogin"
allowed_domains = ['www.example.com']
login_page = "www.example.com/user"
start_urls = ["www.example.com/profile?page=0"]
rules = [Rule(SgmlLinkExtractor(
allow = ('/profile\?page=\d+'),
restrict_xpaths = ('//li[@class="pager-next"]',),canonicalize=False ),
callback = 'parse_page',
follow=True),]
# ulists = []
def parse_page(self, response):
self.log ('XYZ, Started Crawling %s' %response.url)
items = response.xpath("//div[@id='profile']/div")
for temp in items:
userurl = 'www.example.com'+temp.xpath("./div[@class='name']/a/@href").extract()[0]
yield Request(url=userurl,callback=self.parse_profile_page)
self.log ('XYZ, Finished Crawling %s' %response.url)
# return self.ulists
def parse_profile_page(self, response):
usritem = PostUsers()
self.log ('XYZ, Started Crawling user Profile %s' %response.url)
usritem["userlink"] = response.url
usritem["fullname"] = response.xpath("//h1[@id='page-title']/text()").extract()
relative_url = response.xpath("//div[@id='nav-content']/ul/li[2]/a/@href").extract()[0]
usritem["postlink"] = 'www.example.com'+relative_url
usritem["history"] = response.xpath("//div[@id='user_user_full_group_profile_main']/dl/dd[1]/text()").extract()
# self.ulists.append(usritem)
print usritem
# return usritem
【问题讨论】:
-
我想用“scrapy crawl mylogin -t csv -o mylist.csv”导出csv表单中的四个字段
标签: python scrapy yield-return