大一小白爬虫初试(初学者必看)
来源:互联网 发布:比原子小的物质知乎 编辑:程序博客网 时间:2024/04/30 06:21
目录:
- 爬虫基础知识学习网址(简单易懂)
- 案例分析
- 我爬取新闻网站所遇到的问题及其解决方法
- 还存留的疑惑
关于爬虫的基础知识的网站
- 崔庆才爬虫博客(先看) http://cuiqingcai.com/1052.html
- 廖雪峰python学习网站 http://www.liaoxuefeng.c/wiki/001374738125095c955c1e6d8bb493182103fac9270762a000
- 爬虫实例 http://cuiqingcai.com/4352.html
- 知乎小白爬虫具体案例+分析 https://www.zhihu.com/collection/159805421
- 知乎爬虫之知识集锦 (遇到问题时再看) https://zhuanlan.zhihu.com/p/21479334
爬取一个新闻网站
第一步:明确爬虫思路
1)在看完以上教程后,我们可以知道,我们要获取的网页的信息皆来自html源代码,而获取源代码需要我们获得这个网页的url(即链接),所以当我们爬取整个网站时,需要先获得网站的url
2)故而我们需要先观察要爬取的网站的架构
例如我的:
先得到: 大目录下每一项的url
再得到: 该目录项下每一页的url
最后获得: 每一项新闻的url
(此处可用循环函数)3)通过每一项的url,获得该url的html的信息:
标题,发布时间,图片,正文等
(此处可用正则匹配和beautifulsoup)
这一来O(∩_∩)O是不是思路清晰了很多呢?
从我刚刚讲到的就可以知道爬虫最关键的两步就是获得访问权限和 匹配 了, 下面具体问题具体分析
第二步:获得访问权限
1)网页请求头的获取方法:
按"f12"--然后点击"网络监视器"--在列表中随机点击一个--点击后会出现消息头--在消息头处找到请求头--找到'User-Agent'--其对应的值(这就是请求头啦)
这个是我在刚刚说的那个网站上获得的:headers = { 'User_Agent': 'Mozilla/5.0 (X11; Ubuntu; Linux x86_64; rv:53.0) Gecko/20100101 Firefox/53.0'}url = "http://zh.vietnamplus.vn/"m_response = requests.get(url=url, headers=headers)m_html = m_response.text
2)其他详细方法请戳-->http://www.cnblogs.com/junrong624/p/5533655.html
第三步:查看页面元素以及正则匹配
把鼠标移到目录位置按右键-"查看元素",可以定位该目录,并看到其在html上对应的代码:
"><span class="title"><a href="/politics.vnp">时政</a></span></li><li class="parent "><span class="title"><a href="/world.vnp">国际</a></span></li><li class="parent "><span class="title"><a href="/business.vnp">经济</a></span></li><li class="parent "><span class="title"><a href="/social.vnp">社会</a></span></li><li class="parent "><span class="title"><a href="/culture.vnp">文化</a></span></li><li class="parent "><span class="title"><a href="/sports.vnp">体育</a></span></li><li class="parent "><span class="title"><a href="/technology.vnp">科技</a></span></li><li class="parent "><span class="title"><a href="/environment.vnp">环保</a></span></li><li class="parent "><span class="title"><a href="/Travel.vnp">旅游</a></span></li>
当我从网站上进入其中一项,如:"时政"时,我发现出现的新网页的url正好就是上面的 'politics.vnp'+在首页网址(http://zh.vietnamplus.vn/)后面 http://zh.vietnamplus.vn/politics.vnp
所以我们只要把相应的网址的url字符串匹配出来后再联结在一起再访问就可以访问子网页啦!~
这个时候我们就要用到正则匹配了
(请先装好re包)
到底怎么用呢?请戳下面:
- 正则匹配的简单学习的网址:
http://www.cnblogs.com/huxi/archive/2010/07/04/1771073.html?nsukey=87n%2Feuq1bh7UOjRfssJX4yWyLNqQSEzMW%2Fw6i4y5GxXWo8dRgZ1ZYIkAHI44dWrMmTsOPomm%2B6aU2eyVkFkfvTod4B5TLtYC2Z6uk2ez0eBTqzW6HOn7%2BGCeIMy9ViXz9IUMrw%2BipjAA5YYItCXPLA%3D%3D - 正则匹配的详细学习的网址(这个比较容易理解些)
https://deerchao.net/tutorials/regex/regex.htm?nsukey=FH6k8nAWLGh8BnpLuW8%2FP9IKHkoYL93XC4NJ3clbq1MJcfL9HbBOLFd3pLK1g89JflKztPFDK3DRW7vfLGqMWLUKazcMVoUNEgBItrR96dGc8PYahHrqTGdembVCTatGYsQxz5gptqT57qZTFLoERnsH8fCAlLV8%2Fxb4lh0wbKgBtFLEtfDxpO7QpF%2F3RH0T
python代码如下:
classifications = re.findall(r’.+?\s’, m_html)#这里就是正则匹配啦
# 利用集合去重
classifications = list(set(classifications))
print classifications
#获取每个分类的url
num = 0
for classification in classifications:
c_url = ‘http://zh.vietnamplus.vn/’ + classification
print c_url
classification
比较高难度点的就用beautifulsoup
到底怎么用呢?请戳下面:
- Beautifulsoup的学习的网址:
http://blog.sina.com.cn/s/blog_64d0b03c0101dxd3.html Beautifulsoup的详细学习的网址(这个比较容易理解些)
http://cndenis.iteye.com/blog/1746706以此类推,是不是也可以匹配其他信息了
第四步:将爬取的内容保存到文件里
- 参考方法:
http://www.cnblogs.com/ymjyqsx/p/6554817.html
- **爬虫过程中遇到的问题:
- 1>url字符串无法联结
- 2>url无法访问
- 方法
- 方法
- 3>字符串就是匹配不到,明明没错
- 4>编码解码等问题
- 方法
方法
这些内容待我搞明白会继续补充
- 大一小白爬虫初试(初学者必看)
- 至PJ初学者!(初学者必看)
- Java数组(初学者必看)
- Java数组(初学者必看)
- Java数组(初学者必看)
- Java数组(初学者必看)
- SAP概览(初学者必看)
- mybatis入门教程(初学者必看)
- Java数组(初学者必看)
- 初学者必看-Java基础知识(一)
- VC初学者必看
- C++初学者必看
- vb初学者必看
- java初学者必看
- COM初学者必看
- 嵌入式 初学者必看
- ASP初学者必看
- powerdesigner初学者必看
- 0522 js 循环语句
- memset函数使用详解
- GC系列:如何优化标记-整理算法
- Java的运行原理
- 实训之WSN(一)
- 大一小白爬虫初试(初学者必看)
- java Thread、Runnable实例
- 对于进ACM这几个月来的小结
- 如何解决下载的navicat界面乱码问题 以及简单的破解
- C#删除数组(或顺序表等)指定位置上的元素
- 离散题目12
- Codeforces Round #415 (Div. 2) A. Straight «A»
- ArrayList分析
- GCC的使用