随笔分类 - python爬虫
爬虫能干什么
摘要:2021-03-12 23:34:24 [scrapy.core.scraper] ERROR: Error processing {'article_name': '灰塔的黎明', 'article_path': 'D:/data/python/23us', 'article_url': 'htt
阅读全文
摘要:模拟登陆知乎后,跳转到首页,返回400,请求无效,应该是知乎对request请求有做要求。 看了下请求头,主要关注cookie、referer和user_agent(不要问为什么,我看视频的),cookie在scrapy.Request里有单独参数。不管怎样,先测试下: 在Request里加上hea
阅读全文
摘要:使用selenium模拟登陆网站时,有些网站会识别chrome driver里的json信息,从而判断是不是爬虫程序,做到反爬效果。(比如知乎) 下面说明下怎么手动启动chromedriver 1)、启动chrome 给开始菜单里的chrome或者桌面快捷方式,右键打开文件夹所在路径 2)打开dos
阅读全文
摘要:了解http常见状态码 可以通过输入错误的密码来找到登陆知乎的post:url 把Headers拉到底部,可以看到form data _xsrf是需要发送的,需要发送给服务端,否则会返回403错误,提示用户没权限访问 获取xsrf的方法: 接着使用re模块来获取到这一行数值 每次查看知乎页面要用ge
阅读全文
摘要:session和cookie的作用和区别可以在网上查到,这里简单说下,我们使用的http协议本身是种无状态的协议,就是说web服务器接收到浏览器的请求,会直接返回相应内容,并不会检查是哪个浏览器,即浏览器不同的请求直接是没关系的。 如果是像新闻收发,这样没问题,但如果像淘宝这样,会记录用户浏览的商品
阅读全文
摘要:在我们执行scrapy爬取字段中,会有大量的和下面的代码,当要爬取的网站多了,要维护起来很麻烦,为解决这类问题,我们可以根据scrapy提供的loader机制 首先,导入 ItemLoader 可以查看源码,这里先关注的是item和response两入参 debug调试,可以看到拿到的信息 不过实际
阅读全文
摘要:上节说到Pipeline会拦截item,根据设置的优先级,item会依次经过这些Pipeline,所以可以通过Pipeline来保存文件到json、数据库等等。 下面是自定义json scrapy内置了json方法: 除了JsonItemExporter,scrapy提供了多种类型的exporter
阅读全文
摘要:unicode和utf-8编码 PS:数据在内存里,使用unicode编码会方便很多,因为这样占用的bit是统一的,而utf8对于不同的语言占用的bit不同的,但存储文件使用utf8编码会减少很多空间,所以需要灵活转换。 下面是py2中的例子,python存储在内存里的数据是自动转化成unicode
阅读全文
摘要:PS:一个网站下除了主域名,还会有多个子域名 需要通过遍历把所有域名取到 深度优先的算法,根据上面的截图,爬取url的顺序是A--B--D--E--I C--F-G--H,实际上深度优先算法是通过递归算法来实现的 而广度优先和深度优先区分开来,会分层爬取,把同一层级的兄弟节点爬取完后,才会继续爬下一
阅读全文
摘要:爬虫需要用到正则,python内置了正则re模块 关于贪婪匹配和懒惰匹配:正则默认匹配模式是贪婪匹配模式: 上面的例子,这种属于贪婪匹配,下面引入? 符号就能看出效果了,?属于懒惰匹配: 没加?的情况: +前面的字符至少出现一次,下面的子字符串‘AA’就不符合要求了: 大括号,限定次数: {m}匹配
阅读全文
摘要:实际上安装scrapy框架时,需要安装很多依赖包,因此建议用pip安装,这里我就直接使用pycharm的安装功能直接搜索scrapy安装好了。 然后进入虚拟环境创建一个scrapy工程: (third_project) bigni@bigni:~/python_file/python_project
阅读全文
摘要:通过scrapy的Request和parse,我们能很容易的爬取所有列表页的文章信息。 PS:parse.urljoin(response.url,post_url)的方法有个好处,如果post_url是完整的域名,则不会拼接response.url的主域名,如果不是完整的,则会进行拼接 # -*-
阅读全文
摘要:CSS选择器的作用实际和xpath的一样,都是为了定位具体的元素 举例我要爬取下面这个页面的标题 获取文章创建日期: 获取评论数 In [49]: comment_num = response.css("a[href='#article-comment']") In [50]: comment_nu
阅读全文
摘要:使用pycharm debug调试效率会比较慢,因为每次调试都需要向url发送请求,等返回信息,scrapy提供一种方便调试的功能,如下: extract()方法可以取到select list里的date,text()方法可以取到内容。 PS:在chrome里,按F12看到的代码是加载完所有插件后的
阅读全文
摘要:爬虫主要利用基础知识:scrapy vs requests + beautifulsoup 使用scrapy是一个框架,而requests+beautifulsoup都是库 注:webservice(restapi)实际上也是动态网页的一种 PS:垂直领域搜索引擎,特指搜索某个领域的数据,比如汽车、
阅读全文