scrapy实践分析

一、scrapy实践分析
1、使用scrapy的xpath解析天涯社区标题信息

2、使用xpath获取节点对象的文本集合
tagxxx=response.xpath(“//元素名称/子元素名称/....//text()”).extract()

3、使用xpath获取节点属性的内容
attrtxts= response.xpath(“//元素名称/子元素名称/..../@属性名”).extract()
获取单个值:
attrtxts= response.xpath(“//元素名称/子元素名称/..../@属性名”).get()

示例代码如下:
import scrapy

class TianyaspiderSpider(scrapy.Spider):
name = 'tianyaspider'
allowed_domains = ['bbs.tianya.cn/list-free-1.shtml']
start_urls = ['http://bbs.tianya.cn/list-free-1.shtml']

def parse(self, response):
    #获取指定元素的返回文本集合
    contentstring=response.xpath('//*[@id="main"]/div[7]/table/tbody/tr//text()').extract()
   # auths=response.xpath('//*[@id="main"]/div[7]/table/tbody/tr/td[2]/a//text()').extract()
    #获取下一页的元素节点
    print(self.start_urls[0])
    xpathstr=''
    if self.start_urls[0]=='http://bbs.tianya.cn/list-free-1.shtml':
        xpathstr='//*[@id="main"]/div[8]/div/a[2]/@href'
    else:
        xpathstr = '//*[@id="main"]/div[8]/div/a[3]/@href'
    nextpage=response.xpath(xpathstr).get()#获取下一页的链接地址
    fullurlnextpagr="http://bbs.tianya.cn"+nextpage
    print(nextpage)
    print(type(nextpage))
    print(fullurlnextpagr)#输出下一页的地址
    print("获取的内容:",str(contentstring))
    for context in contentstring:
        context=context.replace("\\n","")
        context = context.replace("\\r", "")
        if context!="" :
            print(context.strip())
            print("====================")
    #继续爬取下一页内容
    yield scrapy.Request(fullurlnextpagr,dont_filter=True,callback=self.parse)

课堂练习实践scrapy爬取糗事百科信息: https://www.qiushibaike.com/text/

标签

评论

© 2021 成都云创动力科技有限公司 蜀ICP备20006351号-1