Python爬虫问题

img

如图,每家机构都是一个超链接,怎么把这些链接里的信息爬到一个Excel里,Python代码该怎么写?


import requests
import pandas as pd
headers = {
    'user-agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/115.0.0.0 Safari/537.36',
}

data = {
    'orgType': '10',
}

response = requests.post('https://gs.sac.net.cn/publicity/getOrgStat', headers=headers, data=data)
company=pd.DataFrame(response.json()['data']['data'])
for n in range(len(company)):
    data = {
        'aoiId': company['orgId'][n],
        'ptiId': '',
        '_search': 'false',
        'nd': '1691997627617',
        'pageSize': '10000',
        'pageNum': '1',
        'orderBy': 'id',
        'order': 'desc',
    }
    response = requests.post('https://gs.sac.net.cn/publicity/getPersonList', headers=headers, data=data)
    employee=pd.DataFrame(response.json()['data']['data']['list'])
    employee.to_excel(f"e:\{company['orgName'][n]}.xlsx")

img

img

可以使用lxml解析网页源码,得到连接后,然后再写入Excel文件中。

通过 selenium 或者 requests 模块,获取网页源代码,然后通过 xpath 或者 bs4 解析源代码,找到每一个 机构名称 对应的连接,如果是只包含 uri 的连接,这时需要我们通过导入 urljoin 模块(from urllib.parse import urljoin) 做个拼接。
爬取完成后,把数据保存到一个字典或者pandas的DataFrame对象中,示例代码如下:

import pandas as pd
## 格式类似于这样的
data = [ {'机构名称':'','地址':''},{'机构名称':'','地址':''} ]
df = pd.DataFrame(data)
# 如果是 xlsx 结尾的,需要安装 openpyxl, pip install openpyxl
df.to_excel( '自定义的excel名称.xlsx',index=False )

【以下回答由 GPT 生成】

解决方案:

  1. 首先,导入所需的库,包括requestsBeautifulSoup,用于发送HTTP请求并解析HTML页面。
import requests
from bs4 import BeautifulSoup
  1. 创建一个函数,用于从给定URL爬取页面的HTML内容,并返回解析后的BeautifulSoup对象。
def get_soup(url):
    response = requests.get(url)
    soup = BeautifulSoup(response.content, 'html.parser')
    return soup
  1. 创建一个函数,用于从获取到的网页中提取所需信息,并存储到Excel表格中。可以使用pandas库来处理数据和生成Excel文件。
import pandas as pd

def extract_info(url, output_file):
    soup = get_soup(url)

    # 从网页中提取链接信息
    links = soup.find_all('a')

    # 创建一个列表来存储爬取的数据
    data = []

    for link in links:
        # 获取链接的文本和URL
        text = link.text
        href = link.get('href')

        # 将链接的文本和URL添加到数据列表中
        data.append([text, href])

    # 使用pandas创建DataFrame对象
    df = pd.DataFrame(data, columns=['Text', 'URL'])

    # 将数据保存到Excel文件中
    df.to_excel(output_file, index=False)
  1. 调用extract_info函数,并传入要爬取的网页的URL和要保存的Excel文件名称。
url = 'https://example.com'  # 替换为实际的网页URL
output_file = 'output.xlsx'  # 替换为实际的文件名

extract_info(url, output_file)

这样就能够将多个机构链接的信息爬取到Excel表格中了。

请注意,以上代码是一个简单的示例,实际应用中可能需要处理更复杂的网页结构和数据提取需求。根据具体情况,可能需要进一步优化代码并处理异常情况,例如处理网络请求失败或网页解析错误等。



【相关推荐】



如果你已经解决了该问题, 非常希望你能够分享一下解决方案, 写成博客, 将相关链接放在评论区, 以帮助更多的人 ^-^