css选择器:

css选择器:

#container:选择idcontainer的节点

.container:选取所有class包含container的节点

Li a : 选取所有li下的所有a节点

Ul + p :选择ul 后面的第一个p元素

Div#container>ul :选取idcontainerdiv的第一个ul子元素

Ul ~ P :选取与ul相邻的所有p元素

a[title] :选取所有有title属性的a元素

a[href=’http://jobbole.com’]:选取所有href属性为jobbole.com值的a元素

a[href*=”jobole”]:选取所有href属性包含jobbolea元素;

a[href^=”http”] : 选取所有href属性值为http开头a元素;

a[href$=”.jpg”];选取所有href属性值以.jpg结尾a元素;

input[type=radio]:checked  选择选中radio的元素;

div:not(#container): 选取所有idcontainerdiv属性;

li:nth-child(3):选取第三个li元素;

tr: nth-child(2n):选取第偶数个tr;

 

案例:

Css的应用:

提取title:*(用到伪类选择器)

Tiltle = response.css(".entry-header h1::text").extract()

Create_data=response.css(".entry-meta-hide-on-mobile::text").extract()[0].strip().replace(“·”,” ”)

Comment_num = response.css("a[href='#article-comment'] span::text").extract()[0];

Content = response.css("div.entry").extract()[0]

Tags=response.css(".entry-meta-hide-on-mobile a::text").extract()[0]

###解析列表页中的所有文章url后交给scrapy下载后进行解析;

提取文章所有url后如何交给scrapy,调用自定义的解析函数,再下载,将利用scrapyhttp中的的request类;

Request()参数设置;

(不是所有网站提取到的url是完整的),利用urllib中的parse方法构造url

from urllib import parse

Requesturl = parse.urljoin(response.url,post_url

),callback=self.prase()

利用yield关键字交于scrapy下载;

###用到伪类选择器的attr()方法;

###Id选择器唯一则用#定位;

post_urls = response.css("#archive .floated-thumb .post-thumb a::attr(href)").extract()
for
post_url in post_urls:
   
print(post_url)

猜你喜欢

转载自blog.csdn.net/qq_42633222/article/details/90170962