从页面中遇到废弃的内容无类型返回

时间:2017-05-15 03:19:16

标签: html python-3.x beautifulsoup web-crawler

我正在抓取来自http://www.sfma.org.sg/member/info/a-linkz-marketing-pte-ltd

等网站的公司资料信息

我希望在类别内容之前将公司名称中的内容发送到网站。我写了一些代码,但它返回None类型错误。

任何人都可以帮忙看看代码,看看出了什么问题?非常感谢。

import sys
import csv
import urllib
import requests
from bs4 import BeautifulSoup
import time
import datetime
from random import randint 
import numpy as np
import pandas as pd


fi = open('Input_List.csv', 'r')
#readers = list(csv.reader(fi))
readers=csv.reader(fi)
#print(readers)
df = []

for reader in readers:
    #print(str(reader)[1:-1]+"\n")
    url=str(reader)[2:-2]
    request = requests.session()
    htmlpage = requests.get(url)
    #print("status code: "+ str(htmlpage.status_code))
    if htmlpage.status_code != 200 : 
        break    # something went wrong #  
    soup = BeautifulSoup(htmlpage.text,'lxml')
    for result_table in soup.**findall**("div", {"class": "w3-container"}):
        #content=result_table.find('p')
        #print(result_table)
        content=result_table.text

        if(content.find("Website") > -1):
            index=content.find("Website")
            content=content[:content.find("\n",index)]
            #print(content)
            df=np.append(df,content)
            break
        #print(content)
        df=np.append(df,str(content))
        #print(df)
df1 = pd.DataFrame(df)
df1.to_csv("SFMA.csv",index=False,encoding='utf-8')
        # #df.savetxt("SFMA.csv", index=False,encoding='utf-8')
# #df.save("SFMA.csv")
fi.close()

1 个答案:

答案 0 :(得分:1)

你打错了。 soup.findall("div", {"class": "w3-container"}):应为soup.find_all("div", {"class": "w3-container"}):

findall中没有BeautifulSoup方法,因此它不起作用并返回None

要从公司名称获取数据到网站,您可以执行此操作。

for result_table in soup.find_all("div", {"class": "w3-container"}):

    content=result_table.text
    index=content.find("Website")

    if(index > -1):

        content=content[:content.find("\n",index)]
        print(content)
        break