首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >将url列的值逐个传递给Python中的web爬虫代码

将url列的值逐个传递给Python中的web爬虫代码
EN

Stack Overflow用户
提问于 2021-03-31 15:15:55
回答 2查看 107关注 0票数 0

基于this link的应答代码,我能够创建一个新的列:df['url'] = 'https://www.cspea.com.cn/list/c01/' + df['projectCode']

下一步,我希望将url列的值传递给下面的代码,并将所有已抓取的内容附加为dataframe。

代码语言:javascript
复制
import urllib3
import requests
from bs4 import BeautifulSoup
import pandas as pd

url = "https://www.cspea.com.cn/list/c01/gr2021bj1000186" # url column's values should be passed here one by one
soup = BeautifulSoup(requests.get(url, verify=False).content, "html.parser")
index, data = [], []
for th in soup.select(".project-detail-left th"):
    h = th.get_text(strip=True)
    t = th.find_next("td").get_text(strip=True)
    index.append(h)
    data.append(t)

df = pd.DataFrame(data, index=index, columns=["value"])
print(df) 

我怎么能用Python做到这一点呢?谢谢。

更新:

代码语言:javascript
复制
import requests
from bs4 import BeautifulSoup
import pandas as pd

df = pd.read_excel('items_scraped.xlsx')

data = []
urls =  df.url.tolist()
for url_link in urls:

    url = url_link
    # url = "https://www.cspea.com.cn/list/c01/gr2021bj1000186"
    soup = BeautifulSoup(requests.get(url, verify=False).content, "html.parser")
    
    index, data = [], []
    for th in soup.select(".project-detail-left th"):
        h = th.get_text(strip=True)
        t = th.find_next("td").get_text(strip=True)
        index.append(h)
        data.append(t)
    
    df = pd.DataFrame(data, index=index, columns=["value"])
    df = df.T
    df.reset_index(drop=True, inplace=True)
    print(df)

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

但是它只将一行保存到excel文件中。

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2021-04-01 03:04:56

您需要将循环中生成的dfs组合起来。您可以将它们添加到列表中,然后调用列表上的pd.concat

代码语言:javascript
复制
import requests
from bs4 import BeautifulSoup
import pandas as pd

df = pd.read_excel('items_scraped.xlsx')

# data = []
urls =  df.url.tolist()
dfs = []

for url_link in urls:

    url = url_link
    # url = "https://www.cspea.com.cn/list/c01/gr2021bj1000186"
    soup = BeautifulSoup(requests.get(url, verify=False).content, "html.parser")
    
    index, data = [], []
    for th in soup.select(".project-detail-left th"):
        h = th.get_text(strip=True)
        t = th.find_next("td").get_text(strip=True)
        index.append(h)
        data.append(t)
    
    df = pd.DataFrame(data, index=index, columns=["value"])
    df = df.T
    df.reset_index(drop=True, inplace=True)
    print(df)
    dfs.append(df)

df = pd.concat(dfs)
df.to_excel('result.xlsx', index = False)
票数 1
EN

Stack Overflow用户

发布于 2021-03-31 16:08:19

使用

代码语言:javascript
复制
 urls =  df.url.tolist()

创建一个url列表,然后使用f字符串迭代它们,将每个url插入到基本url中。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/66890578

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档