青岛青岛7080酒店式公寓寓哪个网站的比较好?

python(13)
选取所有article元素的子节点
选取根元素article
/article/a
选取所有属于article的子元素的a元素
选取所有div子元素
article//div
选取所有属于article元素的后代的div元素,不管它出现在article之下的任何位置
选取所有名为class的属性
/article/div[1]
选取属于article子元素的第一个div元素
/article/div[last()]
选取属于article子元素的最后一个div元素
/article/div[last()-1]
选取属于article子元素的倒数第二个div元素
//div[@lang]
选取所有拥有lang属性的div元素
//div[@lang=’eng’]
选取所有lang属性为eng的div元素
选取属于div元素的所有子节点
选取所有元素
选取所有带属性的title元素
article/div/p
xpath简单使用
下面我们使用xpath查找网页中指定的数据,以为例
按下F12进入开发者模式,查找需要查找的文字在网页中的位置
此时右键选择“复制xpath”, 有的浏览器可能没有这个选项,需要安装对应的插件,这里我使用的是火狐的firepath插件
import scrapy
class JobboleSpider(scrapy.Spider):
name = "jobbole"
allowed_domains = ["/"]
start_urls = ['/110949/']
def parse(self, response):
title = response.xpath('//div[@class="entry-header"]/h1/text()').extract()[0]
print re_selector
此时打印结果如下:
[&Selector xpath='//*[@id="post-110949"]/div[1]/h1/text()' data=u'\u601d\u7ef4\u\u9650'&]
可以看到data中就是我们的数据,不过上面的输出是乱码,不过我们可以在pycharm中通过下面来输出
# 把utf-8解码为decode,encode('gbk')将unicode编码为gbk.
print re_selector.extract()[0].decode('utf-8').encode('gbk')
scrapy shell调试
scrapy为我们提供一个shell调试方法,我们可以在该shell下,直接获取访问后返回的对象
scrapy shell http:///110949/
获取文章发布时间
可以看到,文章的发布时间在class=”entry-meta-hide-on-mobile”的p标签中,并且该class只作用在该p标签上,所以我们可以像下面找到文章的发布时间
上面虽然可以获取到时间,但是在时间前后有很多换行符,所以我们需要使用strip()方法去掉这些换行符
获取文章点赞个数
可以看到点赞这个span标签有很多的class
# contains是固定的写法,表示class包含vote-post-up
response.xpath("//span[contains(@class, 'vote-post-up')]").extract()[0]
此时效果如下:
此时我们已经获取了整个点赞的span标签,对于点赞个数的是在其内部标签的h10中显示的,所以可以继续按照下面的方式获取
int(response.xpath("//span[contains(@class, 'vote-post-up')]/h10/text()").extract()[0])
获取文章收藏次数
这里用来获取文章收藏次数
collect_count = response.css(".bookmark-btn::text").extract()[0]
collect_match = re.match(".*?(\d+).*", collect_count)
if collect_match:
collect_count = int(collect_match.group(1))
collect_count = 0
这里因为可能没有用户收藏过,会匹配不到该正则表达式,所以就是0个收藏
获取文章标签
可以看到,在网页中为我们当前文章添加了不同的标签,下面我们获取这些标签
这些标签是在class为entry-meta-hide-on-mobile的p标签下,并且entry-meta-hide-on-mobile在该页面是唯一的
tag_list = response.css(".entry-meta-hide-on-mobile a::text").extract()
for tag in tag_list:
print tag.decode('utf-8').encode('gbk')
此时打印如下:
获取文章内容
response.xpath("//div[@class='entry']").extract()[0]
获取所有文章信息
上面的操作,只是获取到当前页面的一些信息,如果需要获取到所有文章页面的信息,就需要完成下面的操作
获取文章列表页中的文章url并且交给scrapy下载后进行解析
获取下一页的url并交给scrapy进行下载,下载完成后交个parse解析
获取当前页的所有文章url
import scrapy
import sys
reload(sys)
sys.setdefaultencoding("utf-8")
class JobboleSpider(scrapy.Spider):
name = "jobbole"
allowed_domains = ["/"]
start_urls = ['/all-posts']
def parse(self, response):
alltitle_urls = response.css("#archive .floated-thumb .post-thumb a::attr(href)").extract()
for title_url in alltitle_urls:
print title_url
可以看到,才开始已经正确获取到了所有文章的url
完整代码:
import scrapy
from scrapy.http import Request
from urllib import parse
class JobboleSpider(scrapy.Spider):
name = "jobbole"
start_urls = ['/all-posts/']
def parse(self, response):
alltitle_urls = response.css("#archive .floated-thumb .post-thumb a::attr(href)").extract()
for title_url in alltitle_urls:
yield Request(parse.urljoin(response.url, title_url), callback=self.parse_details)
next_url = response.css(".next.page-numbers::attr(href)").extract_first()
if next_url:
yield Request(url=parse.urljoin(response.url, next_url), callback=self.parse)
def parse_details(self, response):
title = response.xpath('//div[@class="entry-header"]/h1/text()').extract()[0]
create_time = response.xpath("//p[@class='entry-meta-hide-on-mobile']/text()").extract()[0].strip().replace("·",
favor_count = int(response.xpath("//span[contains(@class, 'vote-post-up')]/h10/text()").extract()[0])
collect_count = response.css(".bookmark-btn::text").extract()[0]
collect_match = re.match(".*?(\d+).*", collect_count)
if collect_match:
collect_count = int(collect_match.group(1))
collect_count = 0
print(title+"
链接:"+response.url+"
创建时间:"+create_time+"
收藏次数"+str(collect_count))
tag_list = response.css(".entry-meta-hide-on-mobile a::text").extract()
&&相关文章推荐
参考知识库
* 以上用户言论只代表其个人观点,不代表CSDN网站的观点或立场
访问:192762次
积分:4315
积分:4315
排名:第6310名
原创:226篇
评论:57条
文章:22篇
阅读:10949
文章:11篇
阅读:17309
阅读:14716
(3)(3)(5)(2)(8)(5)(16)(6)(4)(2)(2)(4)(11)(12)(2)(8)(5)(9)(7)(19)(16)(36)(4)(1)(7)(4)(22)(8)Scrapy爬取美女图片 _物联网在线家居图册(第2页) _ 土巴兔装修效果图
共有39370套案例2...
下载土巴兔APP
中国装修网怎么的scrapy没法爬中纪委网站_互联网_阁子数码知识网
怎么的scrapy没法爬中纪委网站
编辑: 阁子数码知识网 &&&来源:用户发布&&&发布时间:&&&查看次数:25
帮看看怎么的scrapy没法爬中纪委网站天呀
【探讨解答】
scrapy框架python语言爬虫得到的数据怎么存入数据库?
我安装的是MySQL,按照网上千篇一律的教程编辑了pipleline文件,然后scr...Scrapy依赖于twisted,所以如果Scrapy能用,twisted肯定是已经安装好了。 抓取到的数据,可以直接丢到MySQL,也可以用Django的ORM模型丢到MySQL,方便Django调用。方法也很简单,按数据库的语句来写就行了,在spiders目录里定义自己的爬虫时也可...
怎么样使用Python的Scrapy爬虫框架
有些人问,开发网络爬虫应该选择Nutch、Crawler4j、WebMagic、scrapy、WebCollector还是其他的?这里按照我的经验随便扯淡一下: 上面说的爬虫,基本可以分3类: 1.分布式爬虫:Nutch 2.JAVA单机爬虫:Crawler4j、WebMagic、WebCollector 3. 非J...
现在用scrapy爬一个网站始终遇到521错误,是怎么回事
你的爬虫肯定被该网站检测到了,headers用了都不行那么只有看它是限制的你的ip还是账号,如果不用登录那么你先换个ip跑跑试试,看是否正常,或者直接在爬虫服务器上手动访问看能否成功 ------更新------- 应题主要求,我把测试代码贴出来,这里...
scrapy爬取的网址遇到404应该怎么处理
对于只是读取某几个网站更新内容的爬虫完全没必要在python代码中实现增量的功能,直接在item中增加Url字段。 item[’Url’] = response.url 然后在数据端把储存url的column设置成unique。 之后在python代码中捕获数据库commit时返回的异常,忽略掉...
scrapy怎么爬一组url相似的网页
如果您有还原软件或自带的还原,还原一下系统有效又省事。你想想出事前你是怎么操作的?故障不会无缘无故的出现吧?将出事前下载所有东西全部卸载,在不可以,还原系统或重装,如果是硬件的问题就修修去,有问题请你追问(先看看下面的方法)。...
互联网相关
更多相关内容
本站内容来自网友发布,本站无法保证其部分内容的正确性,请用户一定仔细辨别。
[] &&[联系QQ:885&971&98] &
沪ICP备号&

我要回帖

更多关于 酒店式公寓出租 的文章

 

随机推荐