Как мне отредактировать мой код для циклического просмотра страниц - PullRequest
1 голос
/ 25 сентября 2019

как мне исправить следующий код, чтобы перебрать 709 страниц и вернуть нужные мне результаты?

import pandas as pd
from bs4 import BeautifulSoup,Tag
import requests
import re

res=requests.get("https://cupcakemaps.com/cupcakes/cupcakes-near-me/p:2")
soup = BeautifulSoup(res.text,'lxml')
listings=soup.findAll(class_='media')
data = []
for listing in listings:
    listing_title=listing.find(True,{'title':True}).attrs['title']
    listing_Description=listing.find('p',{'class':'summary-desc'})

    if isinstance(listing_Description,Tag):
        listing_Description = listing_Description.text.strip()

    listing_address=listing.find('p',{'class':'contact-info'})

    if isinstance(listing_address,Tag):
        number_text = listing_address.text.strip()
        listing_address = ''.join(filter(str.isdigit,number_text))

    full_dict = {'Title': listing_title, 'Description': listing_Description, 'Address': listing_address}
    data.append(full_dict)

df = pd.DataFrame(data)
df.to_csv("contact.csv")
print(df)

мне нужно вернуть результаты со всех 709 страниц веб-страницы, которая запускается со страницы1: https://cupcakemaps.com/cupcakes/cupcakes-near-me/ до: page709: https://cupcakemaps.com/cupcakes/cupcakes-near-me/p:709

Ответы [ 2 ]

1 голос
/ 25 сентября 2019

Используйте функцию format().

for n in range(1,709):
    url="https://cupcakemaps.com/cupcakes/cupcakes-near-me/p:{}".format(n)
    print(url)
0 голосов
/ 25 сентября 2019
import pandas as pd
from bs4 import BeautifulSoup,Tag
import requests
import re

data = []
s = "https://cupcakemaps.com/cupcakes/cupcakes-near-me/p:"
for x in range(1,709):
    res=requests.get(s+str(x))
    soup = BeautifulSoup(res.text,'lxml')
    listings=soup.findAll(class_='media')

    for listing in listings:
        listing_title=listing.find(True,{'title':True}).attrs['title']
        listing_Description=listing.find('p',{'class':'summary-desc'})

        if isinstance(listing_Description,Tag):
            listing_Description = listing_Description.text.strip()

        listing_address=listing.find('p',{'class':'contact-info'})

        if isinstance(listing_address,Tag):
            number_text = listing_address.text.strip()
            listing_address = ''.join(filter(str.isdigit,number_text))

        full_dict = {'Title': listing_title, 'Description': listing_Description, 'Address': listing_address}
        data.append(full_dict)

df = pd.DataFrame(data)
df.to_csv("contact.csv")
print(df)

непроверено, потому что я за прокси, но это должно работать, если оригинальный скрипт работал ...

...