菜鸟python爬虫_Python爬虫学习-基础爬取

编译环境:python v3.5.0, mac osx 10.11.4

第三方库:针对网页解析,python有丰富的第三方库如:

BeautifulSoup, urllib, requests etc.

可以通过import来引入指定第三方库,通过from lib import function导入第三方库中的指定函数。如:

import requests, urllib.request, time, os from bs4 import BeautifulSoup # 导入需要用到的第三方库

对网页进行解析:BeautifulSoup & url lib

url = 'https://www.ncbi.nlm.nih.gov/core/alerts/alerts.js_=1462105646975' wb_dt=requests.get(url) soup=BeautifulSoup(wb_dt.text,'lxml')

上述代码可以解析指定url中的HTML, 通过requests中的get方式获得。

wb_dt.text可以获得HTML的纯文本文件。

BeautifulSoup(wb_dt.text,'lxml')则能对传入的纯文本文件采用lxml库进行解析。

筛选需要的信息:soup.select('selector')

可以通过chrome浏览器中的检查查询指定元素的位置,复制selector到

soup.select('selector')

这一步骤主要是为了筛选所选元素特殊的位置,selector只要能指定到所需信息的位置即可。

动态网页解析

当我们需要爬取动态网页大量页面信息时,我们可以从不断response为HTML的headers中找寻规律。如图所示,我们发现其连续加载其实是在返回时不断通过request中url的改变生成。

实战源代码 1 爬取霉霉照片

其中导入的os模块可以判断目录是否存在以及新建目录。

os.makedir(path)与os.makedirs(path)的区别在于若父级目录不存在,则os.makedir(path)会报错,而os.makedirs(path)则会连同父级目录一起创建

os.path.exists(path)则可以检查目录是否存在

总结 1

1、第三方库可以良好的解析我们需要爬取的网页

2、通过刷新发现,观察response可以发现request规律,从而抓取静态网页

3、针对具有反爬虫的网页,可以利用time库中的

time.sleep(seconds)来降低访问频率。加入header和proxies也可以防止针对ip的反爬取。

4、常用user agent https://blog.phpgao.com/user_agent_collection.html

实战源代码 2 爬取一页商品数据(初识API)

**筛选出选定区域的字符串.strings **

去除字符串中的大片空格区域.stripped_strings

整体代码

####总结 2

观察推广和转转href与正常商品信息之间的差别,可以通过

soup.select('a[href^="http://bj.58.com/"]')

发现返回值不对时,值可能由js,node.js等生成

打印soup 搜索变量名再从network文件凭经验中找寻

主要看response返回的值为文本的文件

确定目标后看url和headers,遇到反爬将cookies等全部写入headers中逐个尝试,此次实践,request中需要加referee

此次找寻流程:

从按前面提到的方法,网页中检查浏览量。

发现soup返回值不对,查询soup值发现所含值为0。

推测其值可能由js或者node.js控制,重新加载页面查询network中的js文件,查看返回值为文本的文件。

找到目标文件后,查看其headers。

根据headers编译探索request请求(针对反爬)

All source code can be downloaded at GitHub:

https://github.com/jacobkam/WebCrawlerLearning.git

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/266219.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

点云赋值 PointCloudT::Ptr 运行时崩溃

PointCloudT::Ptr cloud; cloud.reset(new PointCloudT); cloud->points.resize(500);for(int index 0;index <500;index){  cloud->point[index].x 1.0; cloud->point[index].y 1.0;}采用以上方式赋值程序崩溃。Point t; for(int index 0;index <500;ind…

yaf(5) smarty

2013年4月6日 13:41:37 参考: http://www.oschina.net/question/812776_71817 http://yaf.laruence.com/manual/yaf.class.dispatcher.setView.html 这两者都是在bootstrap.php中写_initSmarty()函数来重新实现yaf的视图接口 这中方案默认的是存放模版文件的上级文件夹名字必须…

全国计算机等级考试题库二级C操作题100套(第82套)

第82套&#xff1a; 给定程序中&#xff0c;函数fun的功能是&#xff1a;找出100&#xff5e;999之间&#xff08;含100和999&#xff09;所有整数中各位上数字之和为x&#xff08;x为一正整数&#xff09;的整数,然后输出&#xff1b;符合条件的整数个数作为函数值返回。 例如…

linux最小安装桌面,Linux工作环境:CentOS7最小安装+Xfce桌面环境

ref: https://blog.csdn.net/smstong/article/details/448029893.1 执行CentOS7 最小安装去官网下载CentOS-7.0-1406-x86_64-Minimal.iso&#xff0c;然后刻录光盘&#xff0c;安装之。安装完成后执行yum update更新系统。然后&#xff0c;执行# yum install epel-release安装额…

python自动获取cookie_selenium3+python自动化12-cookie相关操作(获取和删除)

前言在进行接口测试或者自动化测试时&#xff0c;有时就要登录好多次&#xff0c;特别麻烦&#xff0c;那能不能不要一遍一遍输入账号&#xff0c;直接跳过登录页面进行操作。这个时候就要用到cookie&#xff0c;这次主要整理cookie的一些操作&#xff0c;包含获取cookie、删除…

Hibernate(三) - hibernate 表操作-多对多配置

Hibernate 的一对多关联映射 之前在学习 Hibernate 的时候&#xff0c;其实都是单表的操作。在实际的开发当中&#xff0c;比如做一个商城&#xff0c;就需要好多张数据库表&#xff0c;表与表之间是有关系的。之前些做一些关联查询或者是一些基本的查询操作的时候&#xff0c;…

linux怎么用命令备份数据库,使用linux的mysqlhotcopy命令备份数据库

使用linux的mysqlhotcopy命令备份数据库发布时间&#xff1a;2020-07-22 11:18:37来源&#xff1a;亿速云阅读&#xff1a;66作者&#xff1a;清晨栏目&#xff1a;服务器这篇文章将为大家详细讲解有关使用linux的mysqlhotcopy命令备份数据库&#xff0c;小编觉得挺实用的&…

全国计算机等级考试题库二级C操作题100套(第83套)

第83套&#xff1a; 给定程序中&#xff0c;函数fun的功能是&#xff1a;找出100至x&#xff08;x≤999&#xff09;之间各位上的数字之和为15的所有整数&#xff0c;然后输出&#xff1b;符合条件的整数个数作为函数值返回。 例如&#xff0c;当n值为500时&#xff0c;各位数…

vb treeview 展开子节点_详解最长公共子序列问题,秒杀三道动态规划题目

学算法认准 labuladong后台回复进群一起力扣?读完本文&#xff0c;可以去力扣解决如下题目&#xff1a;1143.最长公共子序列(Medium)583. 两个字符串的删除操作(Medium)712.两个字符串的最小ASCII删除和(Medium)好久没写动态规划算法相关的文章了&#xff0c;今天来搞一把。不…

TZOJ 4621 Grammar(STL模拟)

描述 Our strings only contain letters(maybe the string contains nothing). Now we define the production as follows: 1. (C) --> C 2. C --> C 3. (C:num)-->repeat C num times. Illustration: (C) or C stands for a string only contains letters. (C:num) m…

[链接]Python中的metaclass、装饰器

深刻理解Python中的元类(metaclass) Python装饰器学习&#xff08;九步入门&#xff09;

linux查看数据积压,查看kafka消息队列的积压情况

创建topickafka-topics --create --zookeeper master:2181/kafka2 --replication-factor 2 --partitions 3 --topic mydemo5列出topickafka-topics --list --zookeeper master:2181/kafka2描述topickafka-topics --describe --zookeeper master:2181/kafka2 --topic mydemo5生产…

全国计算机等级考试题库二级C操作题100套(第84套)

第84套&#xff1a; 函数fun的功能是&#xff1a;从三个形参a&#xff0c;b&#xff0c;c中找出中间的那个数&#xff0c;作为函数值返 回。 例如&#xff0c;当a3, b5, c4时&#xff0c;中数为4。 请在程序的下划线处填入正确的内容并把下划线删除,使程序得出正确的结果。 注…

python 三引号_Python 基础(一):入门必备知识

目录1 标识符2 关键字3 引号4 编码5 输入输出6 缩进7 多行8 注释9 数据类型10 运算符10.1 常用运算符10.2 运算符优先级1 标识符标识符是编程时使用的名字&#xff0c;用于给变量、函数、语句块等命名&#xff0c;Python 中标识符由字母、数字、下划线组成&#xff0c;不能以数…

排序算法:冒泡和快排 摘自网络

冒泡排序&#xff1a; 首先我们自己来设计一下“冒泡排序”&#xff0c;这种排序很现实的例子就是&#xff1a; 我抓一把沙仍进水里&#xff0c;那么沙子会立马沉入水底&#xff0c; 沙子上的灰尘会因为惯性暂时沉入水底&#xff0c;但是又会立马像气泡一样浮出水面&#xff0c…

镭波笔记本安装linux,镭波笔记本windows7旗舰版系统下载与安装教程

镭波笔记本windows7旗舰版系统下载地址以及安装教程有很多盆友询问&#xff0c;今天&#xff0c;我就将镭波电脑下载安装win7旗舰版系统的详细步骤分享给你们,一起来了解一下镭波电脑是如何安装windows7旗舰版。镭波笔记本Windows7旗舰版系统下载&#xff1a;64位Windows7旗舰版…

全国计算机等级考试题库二级C操作题100套(第85套)

第85套&#xff1a; 给定程序的功能是调用fun函数建立班级通讯录。通讯录中记录每位学生的编号、姓名和电话号码。班级的人数和学生的信息从键盘读入,每个人的信息作为一个数据块写到名为myfile5.dat的二进制文件中。 请在程序的下划线处填入正确的内容并把下划线删除&#xf…

使用泛型解决之前的问题

package fanxing; /* * 使用泛型解决之前的问题 */ import java.util.ArrayList;import java.util.Iterator;import java.util.LinkedList; public class TestGeneric02 { public static void main(String[] args) { LinkedList<Integer> list new LinkedList<>()…

python中文姓名排序_Python实现针对中文排序的方法

本文实例讲述了Python实现针对中文排序的方法。分享给大家供大家参考&#xff0c;具体如下&#xff1a;Python比较字符串大小时&#xff0c;根据的是ord函数得到的编码值。基于它的排序函数sort可以很容易为数字和英文字母排序&#xff0c;因为它们在编码表中就是顺序排列的。但…

网站数据库中“密码加密”方法思考

博主&#xff0c;开始时候&#xff0c;写的web应用&#xff0c;数据库中的密码&#xff0c;都是直接保存的。真正的原汁原味&#xff0c;真正的所见即所得。 后来&#xff0c;看了别人的web应用都是MD5加密的&#xff0c;感觉很不错&#xff0c;自己也在应用中加入了MD5加密&am…