继续浏览精彩内容
慕课网APP
程序员的梦工厂
打开
继续
感谢您的支持,我会继续努力的
赞赏金额会直接到老师账户
将二维码发送给自己后长按识别
微信支付
支付宝支付

python小知识点随手记

zone7
关注TA
已关注
手记 23
粉丝 2611
获赞 461

使用脚本启动 scrapy 爬虫

from scrapy.cmdline import execute

import sys
import os
print(os.path.dirname(os.path.abspath(__file__)))
sys.path.append(os.path.dirname(os.path.abspath(__file__)))
execute(["scrapy","crawl","douban"])
# setting --> ROBOTSTXT_OBEY = False

爬虫分析HTML源码时

在使用 Chrome 浏览器复制的 xpath 时,网页可能会加载其他标签。导致浏览器获取的 xpath 是无效的。
对于 p 标签的 text 是无法获取到全部 text 的,因为他无法识别节点。

scrapy 获取HTML数据

xpath 方法使用之一:
包含,class 中 包含 vote-post-up 这个 class 的标签

response.xpath('//soan[contains('@class','vote-post-up')]')

css 方法使用之一:
同上:过个 class 中,选取 vote-post-up 底下的 h10 标签的文本

response.css('.vote-post-up h10::text')
resposne.css('a[href='#article'] span::text')

获取属性值:

response.css('a::attr(href)')

两个 class 同时获取

response.css('.a.b')
extract_first("") # 若返回值为空,则返回默认值 ""

scrapy 传值给回调函数

meta={"key":"val"}
response.meta.get('key','')

判断是否为 unicode

if isinstance("",str):
    print("unicode")

pipeline 注意点

在处理完 item 的时候,一定要 return 回去

调用 scrapy 官方的 imgpipeline


class ImgPipeline2(ImagesPipeline):# 他处理完毕之后,会传递给下一个 pipeline
    def item_completed(self, results, item, info):
        for ok,value in results:
            img_file_path = value["path"]
        item['img_file_path'] = img_file_path
        return item

存储 cookie


import http.cookiejar as cookielib

import requests

session = requests.session()
session.cookies = cookielib.LWPCookieJar(filename='cookie.txt')
# session.get('http://www.baidu.com')
# session.cookies.save()

# 是否允许重定向
session.get('url', allow_redirects=False)

# 加载 cookie
session.cookies.load(ignore_discard=True)
print(session.cookies)

正则匹配,匹配多行

re.math("","pattarm",re.DOTALL)
打开App,阅读手记
0人推荐
发表评论
随时随地看视频慕课网APP