bs4库中最主要的便是bs类了,每个实例化的对象都相当于一个html页面。
需要采用from-import导入bs类,同时通过BeautifulSoup()创建一个bs对象。
我们可以写一个示例,先看代码:
import requests
from bs4 import BeautifulSoup
import re
import csv
from fake_useragent import UserAgent
url = "http://www.cityhouse.cn/default/forsalerank.html"
headers= {'User-Agent':str(UserAgent().random)}
resp = requests.get(url,headers=headers)
resp.encoding = 'utf-8' # 指定字符集
# 解析数据
# 1. 把页面源代码交给BeautifulSoup进行处理, 生成bs对象
page = BeautifulSoup(resp.text, "html.parser") # 指定html解析器
#print(page)
table = page.find("tbody", attrs={"id": "order_f"}) #
#print(table)
trs=table.find_all("a")
num1=table.find_all("span",attrs={"class": "list_numBodred"})
num2=table.find_all("span",attrs={"class": "list_numBod"})
num=num1+num2
price=table.find_all("span",attrs={"class": "price"})
for i in range(0, len(trs)):
print(num[i].text,trs[i].text,price[i].text)
第一步找到需要数据位置:
看到都在tbody中,调用代码爬取tbody,table = page.find("tbody", attrs={"id": "order_f"})
然后在这一部分找具体数据:
trs=table.find_all("a")
num1=table.find_all("span",attrs={"class": "list_numBodred"})
num2=table.find_all("span",attrs={"class": "list_numBod"})
num=num1+num2
price=table.find_all("span",attrs={"class": "price"})
输出效果如下: