鱼C论坛

 找回密码
 立即注册
查看: 2733|回复: 11

Python crawler

[复制链接]
发表于 2023-4-27 16:18:46 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能^_^

您需要 登录 才可以下载或查看,没有账号?立即注册

x

1:import win32com.client

win32com.client 一个封装为.py的VBA,模拟用户对excel读和写操作,为python调用windows底层组建对word,excel,ppt等进行操作。
只能在windows下使用,并且要安装 office或者WPS.
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

 楼主| 发表于 2023-4-27 19:25:20 | 显示全部楼层
2: from selenium import webdriver
selenium:英[səˈliːniəm,硒,是一个基于浏览器的自动化测试工具
zhangsan = webdriver.Chrome()#打开浏览器
zhangsan.get("https://www.taobao.com")#打开网站
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2023-4-27 19:31:16 | 显示全部楼层
3:WebDriver元素定位方式: id,name,link_text 等。
zhangsan.find_element_by_link_text("亲,请登录").click()
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2023-4-28 08:16:20 | 显示全部楼层
4:
Scrapy是一个适用爬取网站数据、提取结构性数据的应用程序框架,它可以应用在广泛领域,有成熟高效的scrapy-redis分布式策略。

爬虫分类:通用爬虫 和 聚焦爬虫——就是爬虫程序员所进行的工作,就是根客户的需求,爬取指定网站的特定内容。

2. python基础知识

urllib.request
urllib.parse
正则表达式等等基础知识。

4. 抓包工具

chrome浏览器的开发者模式,在这里可以检查网页的各种元素。
fiddler:原本是为测试来测试网站的,后来成了爬虫工程师最喜爱的工具。这是一款开源软件,可以直接去官网下载安装https://www.telerik.com/downl...
postman:可以根据请求头信息生成简单的网页爬取代码,界面相对于fiddler也要美观
motimproxy

简单的爬虫实例:一行代码爬取百度首页,如同在浏览器输入网址一样
import urllib.request
urllib.request.urlretrieve('http://www.baidu.com/', 'baidu.html')


想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2023-4-28 09:55:41 | 显示全部楼层
www.bilibili.com/video/BV1cd4y1y7d7/?p=4&spm_id_from=pageDriver&vd_source=bbd2966da727b3376515872084138922
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2023-4-30 07:56:31 | 显示全部楼层
5:获取content, 根据 当前的 url 的 response为准,如果 拿不到数据,就需要去其他 URL。

当前 url 的 elements 和 url 的 response 不一样。

页面上的数据在哪儿? 当前 URL的response, 其他url的 response , js生成。
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2023-4-30 15:00:25 | 显示全部楼层
6:url的形式

形式 scheme://host[:port#]/path/…./[?query-string][#anchor]
scheme:协议(例如:http,https,ftp)
host:服务器的IP地址或域名
port:服务器的端口(如果是走协议默认端口,80or443)
path:访问资源的路径
query-string:参数,发送给http服务器的数据
anchor:锚(跳转到网页的指定锚点位置)主播
http://localhost:4000/file/part01/1.2.html http://item.id.com/11936238.html#product-detail
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2023-5-1 16:35:57 | 显示全部楼层
7: 种子URL, 网页源码,div标签,数据预处理,数据清洗; 分词语,索引, 引用次数,点击;  pagerank算法

      以图搜图,听歌识曲,以及 随着网络速率提升,可以根据视频搜索;
   
      /robots.txt 协议,网站告诉 user agent(身份,谁) 可以搜索哪些内容;
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2023-5-3 08:43:26 | 显示全部楼层
8:
### 页面上的数据在哪里
一 当前url地址对应的响应中
一 其他的url地址对应的响应中:比如ajax请求中
一 js生成的:部分数据在响应中,全部通过js生成

### requests中解决编解码的方法
一 response.content.decode()
一 response.content.decode("gbk")
一 response.text
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2023-5-5 10:15:14 | 显示全部楼层
9:作:实现任意贴吧的爬虫,保存网页到本地,流程:
      列表
      遍历
      保存

import requests
class TiebaSpider:
    def __init__(self,tieba_name):
        self.tieba_name = tieba_name # 下一行+tieba_name+,2个+?
        self.url_temp="https://tieba.baidu.com/f?kw="+tieba_name+"&ie=utf-8&pn={}"
        self.headers={"User-Agent":"Mozilla/5.0(Macintosh; Intel Mac OS X 10_13_2)ApplewebKit/53"}

    def get_url_list(self):#1.构造url列表
        url_list = []
        for i in range(1000):
        url_list.append(self.url_temp.format(i*50)) return url_list
    def parse_url(self,url):#发送请求,获取响应
        print(url)
        response=requests.get(url,headers=self.headers)
        return response.content.decode()
    def save_html(self,html_str,page_num):#保存html字符串
        file path="1-第0页.html".format(self.tieba name,page num)
        with open(file path."w".encoding:"utf-8") as f: #"李毅-第4页.html"
        f.write(html_str)

    def run(self):#实现主要逻辑
        #1.构造url列表
        url_list= self.get_url_list()#2.遍历,发送请求,获取响应 for url in url list:
        html_str=self.parse_url(url)#3.保存
        page_num =url_list.index(url)+1 #页码数 self.save_html(html_str,page_num)

if __name__ == '__main__':
    tieba_spider = TiebaSpider("李毅")
    tieba_spider.run()
              
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2023-5-6 09:59:27 | 显示全部楼层
10:
from selenium import webdriver
import win32com.client
msword = Dispatch('Word.Application')  # 用Dispatch()的方式將會啟動MS Word。
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2023-5-6 11:18:23 | 显示全部楼层
11:是否知道 服务器地址
      正向代理: Chrome等——>VPN代理 ——> 我们知道:google服务器
      反向代理: Chrome等——>nginx ——> 不知道:服务器

proxies, 高匿代理,哪些支持:https, post ,小于3S的延时,筛选 使用次数少的10个(服务器识别 非同一个人发出的爬虫),检查IP可用性:在线代理IP质量检测网络,F12
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|手机版|Archiver|鱼C工作室 ( 粤ICP备18085999号-1 | 粤公网安备 44051102000585号)

GMT+8, 2024-12-28 03:43

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

快速回复 返回顶部 返回列表