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/
点赞
评论留言