import requests from bs4 import BeautifulSoup def get_rental_info(url): response = requests(url) soup = BeautifulSoup(response.text, 'html.parser rental_list = soup_all('div', class_='content__list--item') for rental in rental_list: title = rental.find('p', class_='content__list--item--title').text.strip() price = rental.find('span', class_='content__list--item-price').text.strip() zone = rental.find('a', class_='content__list--item--des').text.strip() print(f'Title: {title}') print(f'Price: {price}') print(f'Zone: {zone}') print('---') page_count = 5 for page in range(1, page_count+1): url = f'https://sh.lianjia.com/zufang/pg{page}/' get_rental_info(url)
时间: 2024-01-03 09:05:22 浏览: 26
这段代码是一个简单的爬虫,用于从链家网上获取租房信息并打印出来。它使用了requests库发送HTTP请求,使用BeautifulSoup库解析HTML页面。
在函数get_rental_info中,它首先发送请求并获取页面的响应。然后使用BeautifulSoup将响应的文本解析为HTML对象。接着,它找到包含租房信息的div元素,并遍历每个租房信息。
对于每个租房信息,它找到标题、价格和区域,并打印出来。
最后,在主程序中,它设置了一个页面计数变量page_count,并使用循环迭代每一页的URL,并调用get_rental_info函数来获取并打印租房信息。
注意,这里的代码可能存在一些问题,比如缩进错误和变量未定义等。但是基本的逻辑和功能是清晰的。
相关问题
import requests from bs4 import BeautifulSoup def getHTMLText(url): try: r = requests.get(url,timeout=30) r.raise_for_status() r.encoding = r.apparent_encoding return r.text except: return "产生异常" def jiexi(html_doc): soup = BeautifulSoup(html_doc,"html.parser") links = soup.find_all('a') for link in links: print(link.name,link["nref"],link.get.next()) if __name__ == 'main': url = "https://wallhaven.cc/toplist?page=7" print(getHTMLText(url))改进代码
这段代码可以改进的地方有:
1. 函数名jiexi不太直观,可以改为更明确的parse_links。
2. 在解析链接时,可以加上判断,如果链接是以http或https开头的,才输出链接信息,否则忽略。
3. 在主程序中,应该调用parse_links函数,而不是直接打印HTML页面内容。
改进后的代码如下:
```
import requests
from bs4 import BeautifulSoup
def get_html_text(url):
try:
r = requests.get(url, timeout=30)
r.raise_for_status()
r.encoding = r.apparent_encoding
return r.text
except:
return "产生异常"
def parse_links(html_doc):
soup = BeautifulSoup(html_doc, "html.parser")
links = soup.find_all('a')
for link in links:
if link.has_attr('href') and (link['href'].startswith('http') or link['href'].startswith('https')):
print(link.name, link['href'], link.get_text())
if __name__ == '__main__':
url = "https://wallhaven.cc/toplist?page=7"
html_text = get_html_text(url)
parse_links(html_text)
```
这样修改后,代码更加清晰易懂,功能也更加完善。
修改代码,使得li_list的编码格式是utf-8import requests from bs4 import BeautifulSoup url = 'https://www.icbc.com.cn/page/827855918799994880.html' response = requests.get(url=url) page_response = response.text soup = BeautifulSoup(page_response, 'html.parser',from_encoding='utf-8') li_list = soup.select('#mypagehtmlcontent p')
import requests
from bs4 import BeautifulSoup
url = 'https://www.icbc.com.cn/page/827855918799994880.html'
response = requests.get(url=url)
page_response = response.content.decode('utf-8')
soup = BeautifulSoup(page_response, 'html.parser')
li_list = soup.select('#mypagehtmlcontent p')
# 以下为测试代码,可以不用理会
for li in li_list:
print(li.text)