excel学习库

excel表格_excel函数公式大全_execl从入门到精通

记录一次简单的爬虫学习

以下是一个简单的的爬虫代码,以及简单封装的步骤,本文旨在学习,无其他因素。

以下是代码片段:

```python

import asyncio

import requests

from bs4 import BeautifulSoup

from fake_useragent import UserAgent

import pandas as pd

import time

import random

import os

import json

from requests_html import HTMLSession

from pyppeteer import launch

```

读取代理IP配置文件

```python

with open('proxies.json') as f:

proxies = json.load(f)

```

用户登录信息(此处仅为示例,实际应从安全的地方获取)

```python

login_info = {

'jd': {

'username': 'your_jd_username',

'password': 'your_jd_password',

},

'taobao': {

'username': 'your_taobao_username',

'password': 'your_taobao_password',

},

}

```

随机延迟函数

```python

def random_delay(min_delay, max_delay):

time.sleep(random.uniform(min_delay, max_delay))

```

使用session管理cookies

```python

session = HTMLSession()

```

设置代理IP

```python

def set_proxy(proxy):

session.proxies.update({'http': proxy, 'https': proxy})

```

模拟登录方法(此处仅为示例,实际需根据登录页面结构实现)

```python

async def login(platform, login_page_url, credentials):

browser = await launch(headless=True)

page = await browser.newPage()

await page.goto(login_page_url)

```

填写用户名和密码,处理验证码(此处为占位符,实际需要实现)

# ...

```python

await page.click('#submit_button') # 提交登录按钮的ID

```

等待登陆成功页面出现

```python

await page.waitForNavigation()

cookies = await page.cookies()

await browser.close()

```

将cookies添加到session

for cookie in cookies:

session.cookies.set(cookie['name'],cookie['value'], domain=cookie['domain'])

抓取商品价格函数(此处仅为示例,实际需根据商品详情页结构实现)

```python

async def crawl_product(platform, product_url):

random_delay(1, 3)

set_proxy(random.choice(proxies))

response = session.get(product_url)

response.html.render(sleep=2) # 使用render以处理JS渲染的内容

soup = BeautifulSoup(response.html.html, 'lxml')

price_element = soup.select_one('#product_price') # 请替换为实际价格元素的选择器

price = price_element.text.strip() if price_element else 'N/A'

return {'platform': platform, 'price': price}

```

主程序入口

```python

async def main():

products_urls = [

('jd', 'https://item.jd.com/某商品ID.html'),

('taobao', 'https://item.taobao.com/某商品ID.htm'),

]

for platform, url in products_urls:

await login(platform, get_login_url(platform), login_info[platform])

product_data = await crawl_product(platform, url)

print(product_data)

执行主程序

asyncio.run(main())

```

将抓取的数据存入DataFrame并导出到Excel(此处在主程序完成后进行)

```python

data = [...] # 存储抓取到的所有产品数据

df = pd.DataFrame(data)

df.to_excel('products_prices.xlsx', index=False)

```

为了将以上代码编译成一个可执行的程序软件,可以将其封装在一个Python脚本中,并使用像`pyinstaller`这样的工具将Python脚本打包成独立可执行文件。首先,确保你的Python环境中已安装所有所需的库,包括`requests`, `beautifulsoup4`, `pandas`, `fake-useragent`, `requests-html`, `pyppeteer`等。

以下是将代码组织成一个Python脚本并使用`pyinstaller`打包的过程:

1. 将上述代码保存到一个名为`crawler.py`的文件中。

2. 安装pyinstaller:

```python

pip install pyinstaller

```

3. 根据实际情况调整代码中的登录信息、URL和其他配置项。

4. 在命令行中使用`pyinstaller`打包程序:

```python

pyinstaller --onefile crawler.py

```

这将会在dist目录下生成一个可执行文件(例如:`crawler.exe` for Windows或`crawler` for Linux/macOS)。

5. 运行生成的可执行文件即可执行爬虫程序。

需要注意的是,如果你计划将这个爬虫做成桌面应用程序,需要处理的问题可能还包括图形用户界面(GUI)、日志记录、错误处理、跨平台兼容性等。

另外,京东、淘宝等电商网站强烈反对未经授权的爬取行为,并采取了各种反爬措施,所以最好还是寻找官方API或者其他合法途径获取数据。同时,请务必遵守相关法律法规,尊重网站的隐私政策与条款。

发表评论:

◎欢迎参与讨论,请在这里发表您的看法、交流您的观点。

«    2024年12月    »
1
2345678
9101112131415
16171819202122
23242526272829
3031
控制面板
您好,欢迎到访网站!
  查看权限
网站分类
搜索
最新留言
    文章归档
      友情链接