Python 爬虫小记

本文记录了在Ubuntu系统中使用Python进行网络爬虫的初步尝试。通过安装beautifulsoup4和requests模块,实现了网页的抓取和解析。在解析HTML源码时,介绍了如何利用开发者工具定位目标信息。针对反爬策略,文中提到了简单的延时访问和模拟浏览器访问,以及探讨了登录账号以应对更强的反爬机制。最后,文章指出获取HTML后需要进一步解析提取所需数据。
摘要由CSDN通过智能技术生成

1、背景:需要爬取网上的信息,Ubuntu系统下 使用Python完成

2、首先需要在Python中安装两个相关的模块(方法应该就是简单的pip install,不行就百度吧~)

beautifulsoup4(有些简称bs4, pip install beautifulsoup4):网页解析相关的模块

          使用方法 from bs4 import BeautifulSoup

requests(pip install requests):用python语言基于urllib编写的,采用的是Apache2 Licensed开源协议的HTTP库,Requests它会比urllib更加方便,可以节约我们大量的工作 

         使用方法直接 import requests

3、网页源码分析准备工作

打开一个待爬取内容的网页,打开开发者模式或者按F12即可看到相关的html的源码信息,chrome浏览器中鼠标停在源码某一行出,网页上相应的位置会高亮,所以很好定位到自己想要的信息对应的字段

4、敲代码

a、简单的获取网页信息,其中会遇到频繁访问某一个网站被视为攻击或者其他导致获取信息失败,

下面的try操作是最简单的防反爬取策略,延长访问时间间隔

最后的print语句可以将获取的html信息打印到终端

#Python自带的获取方式
url=url0+str(i)+"/#conghua"
html=""
for j in range(20):
    try:
        html=urlopen(url).read().decode('utf-8')
    except Exception as e:
        if j>=9:
            time.sleep(10)
        else:
            time.sleep(0.5)
    else:
        time.sleep(0.1)
        break
print(html)

b、当然了有些网站反爬取较强,所以需要更高以及的应对策略,使用requests模块,模拟浏览器访问

首先需要或者该网页对应的Request headers信息(自行百度吧~)

url=""#输入网址链接即可
headers={
            "user-agent":"Mozilla/5.0(X11; Linux x86_64) AppleWebKit/537.36(KHTML, like "
                         "Gecko) Chrome/73.0.3683.86 Safari/537.36",
            "accept":"text/html,application/xhtml+xml,application/xml;q = 0.9,image/webp,image/apng,*/*;q = 0.8",
            "accept-language": "en-US,en;q = 0.9",
            "accept-encoding":"gzip,deflate,br"
        }#chorme
'''
headers={
            "user-agent":"Mozilla/5.0 (X11; Ubuntu; Linux x86_64; rv:66.0) Gecko/20100101 Firefox/66.0",
            "accept":"image/webp,*/*",
            "accept-language": "en-US,en;q=0.5",
            "accept-encoding":"gzip, deflate, br",
            "connection":"keep-alive"
        }#FireFox
'''
request=requests.get(url,headers=headers)
request.close()
request.encoding="utf-8"
html=request.text
print(html)

c、登录账号解决反爬取

这个仅仅作为总结记录,有待测试效果

#login settings
urlLogin = "......login"#登录界面网址
data = {
        "action": "user_login",
        "user_login":"username",
        "user_pass": 'passward',
}
response = requests.post(urlLogin,data)
cookie = response.cookies.get_dict()
print(cookie)

url=”......“#爬取网页网址
request = requests.get(url, cookies=cookie)
request.close()
request.encoding = "utf-8"
html = request.text
print(html)

d、获取html信息后就是相关的解析提取自己想要的字段信息了

soup=BeautifulSoup(html,features="html.parser")
titles=soup.find_all("a",{"class":"name"})#根据各自的需求提取信息 主要根据网页源码信息进行修改这一句代码,也可以利用正则表达进行提取信息(这个暂时没有试)

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值