IT数码 购物 网址 头条 软件 日历 阅读 图书馆
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
图片批量下载器
↓批量下载图片,美女图库↓
图片自动播放器
↓图片自动播放器↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁
 
   -> 开发工具 -> Pycharm学习记录(一)——爬虫与反爬 -> 正文阅读

[开发工具]Pycharm学习记录(一)——爬虫与反爬

爬虫是好久前学的,然后已经忘得差不多了。简单回顾一下。

1.确定目标网址

baseurl = '目标网址'

2.爬取网页与解析网页(就是边爬边解)

#1.爬取网页
def getData(baseurl):
    datalist = []
    for i in range(0,1):
        url = baseurl + str(i*20)  #调用获取页面信息的函数,10次
        html = askURL(url)
        #2.主逐一解析网页
        soup = BeautifulSoup(html,"html.parser")
        for item in soup.find_all('div',class_="item"):
            print(item)

3.爬取时要适当伪装一下,即代码段中的askURL

def askURL(url):
    #代理池,这里的IP可换
    proxy_list = [
        '202.106.169.142:80',
        '220.181.35.109:8080',
    ]

    #绑定某个IP
    proxy = random.choice(proxy_list)
    urlhandle = urllib.request.ProxyHandler({'http': proxy})
    opener = urllib.request.build_opener(urlhandle)
    urllib.request.install_opener(opener)

    #伪装头,在network中找
    headers = {
        'user-agent': '',
        'referer': '',
        'cookie': '',
    }
    
    #用户代理,模拟头部信息,以及异常处理
    req = urllib.request.Request(url,headers = headers)
    html = ""
    try:
        response = urllib.request.urlopen(req)
        html = response.read().decode("utf-8")
        #print(html)
    except urllib.error.URLError as e:
        if hasattr(e,"code"):
            print(e.code)
        if hasattr(e,"reason"):
            print(e.reason)
    return html

4.解析完成后得到网页信息,找到想要的片段数据,比如想爬取‘链接’

findLink = re.compile(r'<a href="(.*?)">')#这里需要结合网页来编写

link = re.findall(findLink,item)[0]
data.append(link)
datalist.append(data)

5.保存在excel表格当中

#3.保存
def saveData(datalist,savepath):
    book = xlwt.Workbook(encoding="utf-8",style_compression=0)  # 创建
    sheet = book.add_sheet('sheet1',cell_overwrite_ok=True)
    col = ("链接")

    #这里原本爬了好几类信息,所以用的循环,如果只有一个的话就不需要
    for i in range(0,1):
        sheet.write(0,i,col[i])
    for m in range(0,250):
        print("第%d条"%(m+1))
        data = datalist[m]
        for j in range(0,1):
            sheet.write(m+1,j,data[j])
    book.save(savepath)

目前困境:

我的研究对象是民宿,但是Airbnb网站反爬太厉害了,我一进去就是403;途家是个APP,爬取途家的话要学习新的爬取APP数据的技术;携程就是分不清民宿与酒店,在写文章的时候就挺蒙的,还没试过爬取它上面的数据。

解决思路:

首先,先尝试找到Airbnb的403的解决办法,时限大概两天,如果实在不行就暂时先放弃;

其次,对APP数据进行爬虫,一些博主说APP可能会好爬取一些,但是要下载一些软件,还有我也不知道我那老年机是否能成功被爬

最后,考虑下携程的数据,这个未知风险确实有点大了,还是争取突破前面那俩吧。


关于Airbnb反爬。目前采取的措施有:增加头部信息、代理IP池。但是依然没有成功。

?问题分析:

①代理IP池的IP为免费版,很多人都在使用过,Airbnb网站已经对这些IP禁止了。

解:上午不成功,但是下午再去尝试的时候,竟然成功爬取到html了。

②html爬取成功了,但是解析数据上出现问题。没有解析出来。

解:代码错误。要根据网页信息作修改。明日再续。

  开发工具 最新文章
Postman接口测试之Mock快速入门
ASCII码空格替换查表_最全ASCII码对照表0-2
如何使用 ssh 建立 socks 代理
Typora配合PicGo阿里云图床配置
SoapUI、Jmeter、Postman三种接口测试工具的
github用相对路径显示图片_GitHub 中 readm
Windows编译g2o及其g2o viewer
解决jupyter notebook无法连接/ jupyter连接
Git恢复到之前版本
VScode常用快捷键
上一篇文章      下一篇文章      查看所有文章
加:2021-11-10 12:36:19  更:2021-11-10 12:37:38 
 
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁

360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年11日历 -2024/11/15 17:34:27-

图片自动播放器
↓图片自动播放器↓
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
图片批量下载器
↓批量下载图片,美女图库↓
  网站联系: qq:121756557 email:121756557@qq.com  IT数码