最近在学习python,不过有一个正则表达式一直搞不懂,自己直接使用最笨的方法写出了一个百度爬虫,只有短短16行代码。

首先安装必背包:

pip3 install bs4

pip3 install requests

安装好后,输入

import requests

from bs4 import BeautifulSoup

F5运行如果不报错则说明安装成功。

打开浏览器,输入'www.baidu.com',即进入百度,随便搜索什么,我这里用'python'为例

可以发现,百度搜索出来的链接为

https://www.baidu.com/s?ie=utf-8&f=8&rsv_bp=1&tn=baidu&wd=python****

最后可以简化为:

https://www.baidu.com/s?wd=python

所以首先尝试获取搜索结果的html:

import requests

from bs4 import BeautifulSoup

url='https://www.baidu.com/s?wd='+'python'

headers = {"Accept":"text/html,application/xhtml+xml,application/xml;q=0.9,image/webp,image/apng,*/*;q=0.8,application/signed-exchange;v=b3;q=0.9","User-Agent":"Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/80.0.3987.16 Safari/537.36"}

html = requests.get(url,headers=headers).text

print(html)

然后,我们再从HTML里面找出我们想要的

可以看爬下来的数据也可以使用谷歌浏览器的F12

这里已谷歌的F12为例

可以发现,div标签中

class为'result c-container '的为非百度,非广告的内容(我们需要的内容)

class为'result-op c-container xpath-log'的为百度自家的内容(可以按需筛选)

class为其它的都为广告

首先定义筛选

soup = BeautifulSoup(html, 'html.parser')

使用for循环找出所有div标签,且class为'result c-container'

for div in soup.find_all('div',class_="result c-container"):

print(div)

让后再次使用for循环在其中找出h3标签

for div in soup.find_all('div',class_="result c-container"):

#print(div)注释掉方便检查代码

for h3 in div.find_all('h3'):

print(h3.text)

再次寻找出标题和链接(a标签)

for div in soup.find_all('div',class_="result c-container"):

#print(div)

for h3 in div.find_all('h3'):

#print(h3.text)

for a in h3.find_all('a'):

print(a.text,' url:',a['href'])

这样,我们就成功屏蔽了广告、百度百科等等

整体代码如下:

import requests

from bs4 import BeautifulSoup

url='https://www.baidu.com/s?wd='+'python'

headers = {"Accept":"text/html,application/xhtml+xml,application/xml;q=0.9,image/webp,image/apng,*/*;q=0.8,application/signed-exchange;v=b3;q=0.9","User-Agent":"Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/80.0.3987.16 Safari/537.36"}

html = requests.get(url,headers=headers).text

print(html)

soup = BeautifulSoup(html, 'html.parser')

for div in soup.find_all('div',class_="result c-container"):

#print(div)

for h3 in div.find_all('h3'):

#print(h3.text)

for a in h3.find_all('a'):

print(a.text,' url:',a['href'])

#with open(r'C:/爬虫/百度.txt', 'w', encoding='utf-8') as wr:#如果需要将爬下来的内容写入文档,可以加上这两句

# wr.write(page)

顺便说一句,里面的headers是为了隐藏爬虫身份,虽然访问量大的话没用,但不用的话百度直接可以发现你是爬虫从而直接封你的IP,这样会搞得你每次上百度都要输验证码

python爬虫代码1000行-Python爬虫教程(16行代码爬百度)相关推荐

  1. Python爬虫教程(16行代码爬百度)

    最近在学习python,不过有一个正则表达式一直搞不懂,自己直接使用最笨的方法写出了一个百度爬虫,只有短短16行代码. 首先安装必背包: pip3 install bs4 pip3 install r ...

  2. 想写Python爬虫?看这5个教程就行了!

    写爬虫总是非常吸引IT学习者,毕竟光听起来就很酷炫极客,我也知道很多人学完基础知识之后,第一个项目开发就是自己写一个爬虫玩玩. 其实懂了之后,写个爬虫脚本是很简单的,但是对于新手来说却并不是那么容易. ...

  3. 学python心得体会1000字-Python学习心得体会总结,不要采坑

    大家要持续关注哦,不定时更新Python知识哦! Python 作为一个近年备受好评的语言,它的一些优点让人无法忽视.Python 是一个高层次的结合了解释性.编译性.互动性和面向对象的脚本语言.它的 ...

  4. php换行太长代码,【PyCharm中文教程 16】代码太长?试试自动换行

    在使用PyCharm码代码的时候,有些单行的代码比较长或者屏幕比较小,经常需要手动拉动滚动条,才能看全代码. 如果不想去动滚动条,其实可以设置超过屏幕宽度的代码自动代码的 点击右键,勾选 Soft-W ...

  5. python闹钟界面源码_Python GUI 教程 25行代码写一个小闹钟

    今天我们讲一下用Python写的GUI小程序.一个小闹钟(只是屏幕提示,没有声音哦) 让我们先介绍这个闹钟如何奇葩. 需要通过命令行启动. 没有标题栏. 没菜单. 甚至没有关闭按钮. 没有运行界面. ...

  6. 全站最详细的Python numpy 搭建全连接神经网络模型教程(理论计算+代码实现)(不止能预测手写数字数据,准确率93.21%)

    1.引言 本文构建的全连接神经网络模型结构图如上.其中中间隐藏层的数量以及各层(输入层.隐藏层.输出层)的神经单元数量均可 自由设置,本文构造的神经网络并不是专门为识别手写数字而写死的,而是可以根据 ...

  7. python跳出两层for_干货 | 收藏!16段代码入门Python循环语句

    (图片付费下载于视觉中国)作者 | 李明江 张良均 周东平 张尚佳,本文摘编自<Python3智能数据分析快速入门>来源 | 大数据(ID:hzdashuju)[导读]本文将重点讲述for ...

  8. python高阶函数教学_Python 简明教程 --- 16,Python 高阶函数

    对于那些快速算法,我们总是可以拿一些速度差不多但是更容易理解的算法来替代它们. -- Douglas Jones 目录 高阶函数一般以函数为参数. 本节我们介绍Python 中三个方便的高阶函数,分别 ...

  9. c语言求婚代码大全,程序员表白教程,这些代码用过的都成功了!

    作为一名程序员,如何用自己的技术向喜欢的人表白? 这篇程序员表白教程,可以让你创造出不一样的浪漫! 你值得拥有! 1. I Love You Batch le 不如送她一个惊喜? 让她的电脑自动关机, ...

最新文章

  1. input反应慢 vue_Vue v-model实时更新带来的输入框卡顿问题
  2. C#使用BerkeleyDB操作简介
  3. pandas使用groupby函数进行分组聚合并使用agg函数将每个分组特定变量对应的多个内容组合到一起输出(merging content within a specific column of g
  4. Oracle字符集问题总结
  5. AbstractQueuedSynchronizer 原理分析 - Condition 实现原理
  6. hibernate mysql 映射_Hibernate怎么不用配置mapping就使用数据库表映射实体
  7. BASIC-8 回文数
  8. windows下php swoole扩展,Windows 下安装 swoole 图文教程(php)
  9. 每日一题:leetcode724.寻找数组的中心索引
  10. Matlab--max,min函数的用法
  11. Web服务软件工厂(WSSF)演练之三:创建服务契约和实现方法
  12. 绘制半透明矩形Gdiplus和GDI性能对比
  13. VS2019搭建C语言开发环境(图文教程)
  14. java.lang.UnsupportedOperationException: This is supposed to be overridden by subclasses
  15. Appium+网易mumu模拟器+python 使用笔记
  16. 【经典面试题】css如何画一个三角形?
  17. Python中while循环练习——打印星星总结
  18. 我就是这样学 Python 的
  19. 华为实习结束后,鹅厂和字节跳动递来的offer让我手足无措
  20. 普通管理类程序开发之难度系数、层次之说法

热门文章

  1. js滚动页面到固定位置进行操作
  2. 如何学习——为什么不想听课
  3. iOS12真机调试包
  4. 约束优化方法之拉格朗日乘子法与KKT条件
  5. Maven的简单使用
  6. InstallShield2013 error 6109
  7. python 网络编程第二版
  8. Oracle体系结构及备份(十六)——bg-ckpt
  9. 解决java web项目导入后出现的问题 ---cannot be read or is not a valid ZIP file
  10. web service(web服务)总结