【问题标题】:Save and Scraping multiple pages with BeautifulSoup and pandas使用 BeautifulSoup 和 pandas 保存和抓取多个页面
【发布时间】:2019-10-18 04:03:27
【问题描述】:

我用 jupiter notebook 用这段代码测试了我的代码

...
rname = soup.find('p', 'con_tx')
#rnamelis = rname.findAll('p')
rname
from urllib.request import urljoin
  story=[]
  #review_text = lis[0].find('p').getText()
  #list_soup =soup.find_all('p', 'con_tx')
  story=rname.getText()
  story

而且效果很好。

(结果)'전 여친에 ...'

但是当我试图抓取多个页面时

from bs4 import BeautifulSoup
from urllib.request import urlopen
from urllib.request import urljoin
import pandas as pd
import numpy as np
import requests


base_url = 'https://movie.naver.com/movie/bi/mi/basic.nhn?code='
pages =['177374','164102']
url = base_url + pages[0]
story = []
for n in pages:
    # Create url
    url = base_url + n

    # Parse data using BS
    print('Downloading page %s...' % url)
    res = requests.get(url)
    res.raise_for_status()
    html = urlopen(url)
    soup = BeautifulSoup(html, "html.parser")
    #print(soup.find('p', 'con_tx'))

    rname = soup.find('p', 'con_tx')
    story=rname.getText()
    data = {story}
    df = pd.DataFrame(data)
    df.head()
    df.to_csv('./moviestory.csv', sep=',', encoding='EUC-KR')

出现了一条错误消息。

ValueError: DataFrame 构造函数未正确调用!

如何修复我的代码? Crawling area

【问题讨论】:

    标签: python pandas web-scraping beautifulsoup web-crawler


    【解决方案1】:

    不确定您要做什么,但我注意到的一件事是您每次都在覆盖您的数据框。也不知道你为什么将故事初始化为列表,然后将其存储为循环中的字典。

    from bs4 import BeautifulSoup
    import pandas as pd
    import requests
    
    
    base_url = 'https://movie.naver.com/movie/bi/mi/basic.nhn?code='
    pages =['177374','164102']
    
    df = pd.DataFrame()
    for n in pages:
        # Create url
        url = base_url + n
    
        # Parse data using BS
        print('Downloading page %s...' % url)
        res = requests.get(url)
        soup = BeautifulSoup(res.text, "html.parser")
        rname = soup.find('p', 'con_tx')
        story=rname.getText()
        data = [story]
        df = df.append(pd.DataFrame(data), sort=True).reset_index(drop=True)
    
    df.to_csv('./moviestory.csv', sep=',', encoding='EUC-KR')
    

    【讨论】:

    • 我的代码有一些遗漏。我知道是因为你的回答,而且效果很好。谢谢你的回答。
    猜你喜欢
    • 2014-12-17
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2023-03-20
    • 2013-01-29
    • 2018-12-09
    • 1970-01-01
    相关资源
    最近更新 更多